列表与元组
一.字符串的比较 "is" , "in" , "=="
1.> == 主要比较的是内容和具体的数据类型
str1="helloworld" #定义对象str1并赋值为"helloworld" str2="helloworld" #定义对象str2并赋值为"helloworld" str3="hellopython" #定义对象str3并赋值为"hellopython" str4="hello" #定义对象str4并赋值为"hello" str5="java" #定义对象str5并赋值为"java"
if str1==str2: #比较对象str1与str2,如果相同 print("对象str1与对象str2相同") #输出"对象str1与对象str2相同" else: #其他的(比较对象str1与str2,如果不相同) print("对象str1与对象str2不相同") #输出"对象str1与对象str2不相同" if str1==str3: #比较对象str1与str3,如果相同 print("对象str1与对象str3相同") # 输出"对象str1与对象str3相同" else: # 其他的(比较对象str1与str3,如果不相同) print("对象str1与对象str3不相同") # 输出"对象str1与对象str3不相同"
输出结果:
1 对象str1与对象str2相同 2 对象str1与对象str3不相同
2.> in 比较的是内容包含,也暗含了数据类型的比较,因为比较首先前提是数据类型是一致的
1 str1="helloworld" #定义对象str1并赋值为"helloworld" 2 str2="helloworld" #定义对象str2并赋值为"helloworld" 3 str3="hellopython" #定义对象str3并赋值为"hellopython" 4 str4="hello" #定义对象str4并赋值为"hello" 5 str5="java" #定义对象str5并赋值为"java" 6 if str4 in str1: #比较对象str1与str4,如果str1包含str4 7 print("对象str1包含str4") #输出"对象str1包含str4" 8 else: #其他的(比较对象str1与str4,如果str1不包含str4) 9 print("对象str1不包含str4") #输出"对象str1不包含str4" 10 if str5 in str1: #比较对象str1与str4,如果str1包含str5 11 print("对象str1包含str5") #输出"对象str1包含str5" 12 else: #其他的(比较对象str1与str5,如果str1不包含str5) 13 print("对象str1不包含str5") #输出"对象str1包含str5"
输出结果:
1 对象str1包含str4 2 对象str1不包含str5
3.>is 比较的是两个对象的内存地址
1 str1="helloworld" #定义对象str1并赋值为"helloworld" 2 str2="helloworld" #定义对象str2并赋值为"helloworld" 3 str3="hellopython" #定义对象str3并赋值为"hellopython" 4 str4="hello" #定义对象str4并赋值为"hello" 5 str5="java" #定义对象str5并赋值为"java" 6 if str1 is str2: #比较对象str1与str2,如果内存地址相同 7 print("对象str1与对象str2的内存地址相同") #输出"对象str1与对象str2的内存地址相同" 8 else: #其他的(比较对象str1与str2的内存地址,如果不相同) 9 print("对象str1与对象str2的内存地址不相同") #输出"对象str1与对象str2的内存地址不相同" 10 if str1 is str3: #比较对象str1与str3的内存地址,如果相同 11 print("对象str1与对象str3的内存地址相同") # 输出"对象str1与对象str3的内存地址相同" 12 else: # 其他的(比较对象str1与str3的内存地址,如果不相同) 13 print("对象str1与对象str3的内存地址不相同") # 输出"对象str1与对象str3的内存地址不相同" 14 print("对象str1的内存地址:",id(str1)) #输出对象str1的内存地址 15 print("对象str2的内存地址:",id(str2)) #输出对象str2的内存地址 16 print("对象str3的内存地址:",id(str3)) #输出对象str3的内存地址
输出的结果:
1 对象str1与对象str2的内存地址相同 2 对象str1与对象str3的内存地址不相同 3 对象str1的内存地址: 1796129439344 4 对象str2的内存地址: 1796129439344 5 对象str3的内存地址: 1796134211312
二.列表 list
1.列表的特点:
①可存放多个值
②按照从左到右的顺序定义列表元素,下标从0开始顺序访问
③列表是有序的
④列表是可变化的,也就是说可以根据列表的索引位置来修改表的值
2.查看列表的使用方法cd()
#列表的关键字是list list1=[11,99.99,"python",100,"tang"] #定义列表list1赋值为--11,99.99,"python",100,"tang" print(dir(list1)) #输出列表list1的使用方法
输出的结果为下:
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
3.添加:
①'append'(添加的元素默认放在最后一位)
1 #插入append 添加的元素默认放在最后一位 2 list1=[11,99.99,"python",100,"tang"] #定义列表list1赋值为--11,99.99,"python",100,"tang" 3 list1.append("boy") #添加元素”boy“到表list1中 4 print(list1) #输出列表list1的值
输出结果:
[11, 99.99, 'python', 100, 'tang', 'boy']
②‘insert’(按照索引添加元素,可以随意添加至指定位置)
1 list1=[11,99.99,"python",100,"tang"] #定义列表list1赋值为--11,99.99,"python",100,"tang" 2 list1.insert(3,"boy") #添加元素”boy“到表list1中索引为3的地方 3 print(list1) #输出列表list1的元素
输出结果:
[11, 99.99, 'python', 'boy', 100, 'tang']
4.删除:
①pop(默认删除最后一个元素并输出删除的元素内容)
1 list1=[11,99.99,"python",100,"tang"] #定义列表list1赋值为--11,99.99,"python",100,"tang" 2 print(list1.pop()) #删除列表list1的最后一个元素输出删除的内容
输出结果:
tang
②remove(可以删除任意位置的元素)
1 list1=[11,99.99,"python",100,"tang"] #定义列表list1赋值为--11,99.99,"python",100,"tang" 2 list1.remove("python") #删除列表list1中的“python”元素 3 print(list1) #输出列表list1的值
输出结果:
[11, 99.99, 100, 'tang']
5.清空:'clear'
1 list1=[11,99.99,"python",100,"tang"] #定义列表list1赋值为--11,99.99,"python",100,"tang" 2 list1.clear() #清空列表list1中元素 3 print(list1) #输出列表list1
输出结果:
[]
6.复制:'copy'
1 list1=[11,99.99,"python",100,"tang"] #定义列表list1赋值为--11,99.99,"python",100,"tang" 2 list2=list1.copy() #复制列表list1的元素给列表list2 3 print("list1=",list1) #输出列表list1 4 print("list2=",list2) #输出列表list2
输出结果:
1 list1= [11, 99.99, 'python', 100, 'tang'] 2 list2= [11, 99.99, 'python', 100, 'tang']
7.查元素的总数:'count'
1 list1=[11,"tang",99.99,"python",100,"tang"] #定义列表list1赋值为--11,"tang",99.99,"python",100,"tang" 2 print("list1元素tang的总数:",list1.count("tang")) #输出列表list1中元素tang的总数
输出结果:
list1元素tang的总数: 2
8.排序:'sort' (排序是针对同一类型从小到大的排序)
1 list1=[2,40,4,19,7,12,32] #定义列表list1赋值为--"2,40,4,19,7,12,32" 2 list1.sort() #对列表list1的元素进行排序 3 print("list1中元素排序之后的结果:",list1)
输出结果:
list1中元素排序之后的结果: [2, 4, 7, 12, 19, 32, 40]
9.合并:'extend'
1 list1=[2,40,4,19,7,12,32] #定义列表list1赋值为--"2,40,4,19,7,12,32"
2 list2=[23,"python",34,1,"tang"] #定义列表list2赋值为--23,"python",34,1,"tang"
3 list1.extend(list2) #合并列表list2到列表list1中
4 print("list1与list2合并之后的结果:",list1)
输出结果:
list1与list2合并之后的结果: [2, 40, 4, 19, 7, 12, 32, 23, 'python', 34, 1, 'tang']
10.反转'reverse'
1 list2=[23,"python",34,1,"tang"] #定义列表list2赋值为--23,"python",34,1,"tang" 2 list2.reverse() #翻转列表list2 3 print("翻转列表list2之后的结果:",list2)
输出结果:
翻转列表list2之后的结果: ['tang', 1, 34, 'python', 23]
11.查索引:'index'
list2=[23,"python","tang",34,1,"tang"] #定义列表list2赋值为--23,"python","tang",34,1,"tang" print("列表list2中元素“python”的索引:",list2.index("python")) print("列表list2中元素“tang”的索引:",list2.index("tang"))
输出结果:
列表list2中元素“python”的索引: 1 列表list2中元素“tang”的索引: 2 (出现多个元素相同时只显示第一个的索引)
三.切片和再探索列表
1.切片(只包含开头不包含结尾)
list2=["C","Python","Java","Net","Go","PHP"] #定义列表list2赋值为"C","Python","Java","Net","Go","PHP" print("索引为1的元素:",list2[1]) #输出"Python" print("索引0-3的元素:",list2[0:3]) #输出"C","Python","Java" print("索引1-4的元素:",list2[1:4]) #输出"Python","Java","Net" print("索引为-1的元素:",list2[-1]) #输出"PHP" print("索引-1到-4的元素:",list2[-4:-1]) #输出'Java', 'Net', 'Go'
输出结果:
索引为1的元素: Python 索引0-3的元素: ['C', 'Python', 'Java'] 索引1-4的元素: ['Python', 'Java', 'Net'] 索引为-1的元素: PHP 索引-1到-4的元素: ['Java', 'Net', 'Go']
2.再探索列表
list3=[x for x in range(7)] #定义列表list3赋值为小于7的数 list4=[] #定义列表list4 list5=list() #定义列表list5 for a in list3: #循环展示列表list3的元素到列表a中 if a<5: #如果列表a的元素小于5 list4.append(a) #添加到列表list4中(大于5的不会添加) print("列表list3中小于5的元素:",list4) #输出列表list3中小于5的元素到列表list4中 for b in list3: #循环展示列表list3的元素到列表b中 if b>4: #如果列表a的元素大于4 list5.append(b) #添加到列表list5中(小于4的不会添加) print("列表list3中大于4的元素:",list5) #输出列表list3中大于4的元素到列表list5中
输出结果:
列表list3中小于5的元素: [0, 1, 2, 3, 4]
列表list3中大于4的元素: [5, 6]
四.复杂的数据结构与改变列表的值
1.复杂的数据结构
list1=[[1,3,5,7,9],["tang","lisi","zhangsan"]] list2=[[1,3,5,7,9,["python","java","c"]],["tang","lisi","zhangsan"]] list3=[[1,3,5,7,9,["python","java",["helloworld","hellopython"],"c"]],["tang","lisi","zhangsan"]] print(list1[1][2]) #输出列表list1中的“zhangsan”元素 print(list2[0][5][1]) #输出列表list2中的“java”元素 print(list3[0][5][2][1]) #输出列表list3中的"hellopython"元素
输出结果:
zhangsan
java
hellopython
2.改变列表的值
list1=[[1,3,5,7,9,["python","java",["helloworld","hellopython"],"c"]],["tang","lisi","zhangsan"]]
改变列表list1中的元素“java”为“php”
list1[0][5][1]="php" print(list1)
输出结果:
[[1, 3, 5, 7, 9, ['python', 'php', ['helloworld', 'hellopython'], 'c']], ['tang', 'lisi', 'zhangsan']]
五.元组tuple
1.元组与列表的区别:list列表是可变的,而tuple元组是不可变的
2.查看元组的使用方法dir()
tuple1=("python",[1,2,3],[4,5,6])
查看元组tuple1的使用方法
print(dir(tuple1))
输出结果:
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
3.查看元素总数count()
tuple1=("python",[1,2,3],[4,5,6],"python")
查看元组tuple1中元素python的数量
print("元组tuple1中元素python的数量为:",tuple1.count("python"))
输出结果:
元组tuple1中元素python的数量为: 2
4.查看元素索引 index()
tuple1=("python",[1,2,3],[4,5,6],"python")
查看元组tuple1中元素[1,2,3]的索引
print("元组tuple1元素[1,2,3]的索引为:",tuple1.index([1,2,3]))
输出结果:
元组tuple1元素[1,2,3]的索引为: 1
5.元组的注意事项:
①当元组中只要一个元素的时候要加逗号,否则会成为字符串的数据类型
如:现有元组tuple1跟元组tuple2,tuple2比tuple1多一个逗号
tuple1=("hello") tuple2=("hello",)
查看tuple1跟tuple2的数据类型
print("元组tuple1的数据类型为:",type(tuple1)) print("元组tuple1的数据类型为:",type(tuple2))
输出结果:
元组tuple1的数据类型为: <class 'str'> 元组tuple1的数据类型为: <class 'tuple'>
②元组的不可变指的是它不能往里面添加新的元素,也不能对现有的元素进行删除,但是可以修改里面元素的信息跟元素的值(只能对列表里面的值进行修改)
tuple1=("hello",[1,2,3],["python","c","java"])
如:修改元组tuple1中的c元素为hellopython
tuple1[2][1]="hellopython" print("tuple1=",tuple1)
输出结果:
print1= ('hello', [1, 2, 3], ['python', 'hellopython', 'java'])