列表中可以放整型、浮点型、字符串和对象,也可以是这几种类型的混合体
1. 创建列表
member = [123 , 'abc' , 1.45]
empty = []
2. 向列表添加元素:append()、extend()和insert()
append():每次只能加一个元素,参数是元素
member.append('abc')
len(member) #输出长度为4
extend():可以添加多个元素,参数是列表
member.extend([34 , '哈哈'])
insert():在指定位置添加元素,参数是位置和元素
member.insert(0,'456')
#注意#位置是从0开始的!
3. 从列表获取元素
member[i] #获取第i的位置的元素,注意索引从0开始
4. 从列表删除元素:remove()、del、pop()
remove():参数为元素名
member.remove(123)
del为语句,后跟列表索引
del member[0] #删除了第1个元素
del member #删除整个列表
pop():有返回值,参数为索引,无参时默认列表末尾元素
member.pop() #删除了末尾元素
name = member.pop() #把末尾元素赋值给name
member.pop(0) #删除了第1个元素
name = member.pop(0) #把第1个元素赋值给name
实例:在迭代器中删除列表元素是非常危险的,因为迭代器是直接引用列表的数据进行引用。这里把列表拷贝给迭代器,然后对原列表进行删除操作就没事了。
t_location = t.move()
for each_fish in fish[:]:
if each_fish.move() == t_location:
t.eat()
fish.remove(each_fish)
5. 列表分片
member = [1.45, '123', 34 , 4.5]
member[1:3] #返回['123', 34],但member列表不变,只是取出了一个子集
member[:3] #返回[1.45, '123', 34] ,即从头开始到第3-1个元素
member[1:] #返回['123', 34, 4.5] ,即从第2个元素开始到末尾元素
member[:] #原列表的一个拷贝
member[1:10:2]#取1到10,步长为2
member[::2]#全取,步长为2
member[::-2]#倒着全取,步长为2
6. 列表常用的操作符
1. 比较操作符
list1 = [3]
list2 = [4]
list1 < list2
#输出:True
2. 逻辑操作符
Paste_Image.png(list1 < list2) and (list2 >= list1)
#输出:True
3. 连接操作符
list1 + list2
#输出:[3, 4]
4. 重复操作符
list1 * 3 #输出:[3, 3, 3]
5. 成员关系操作符
3 in list1 #输出:True
list2 = [123 , [12 , 45] , 'abc']
[12,45] in list2 #True
12 in list2[1] #True
12 in list2 #False
list2[1][1] #45
7. 列表的成员函数
如下指令可列出list的所有成员函数
dir(list)
1. reverse()函数:翻转列表中元素
list4 = [1, 2, 3]
list4.reverse() #list4=[3, 2, 1]
2. sort()函数:排序函数(默认升序)
list5 = [4, 2, 5]
list5.sort() #升序
list5.sort(reverse = True) #降序
#注意#list = list[:]和list = list的区别
list6 = list5[:] #列表拷贝
list7 = list5 #列表指向
list5.sort() #list6不变,list7跟随list5变
比较上面和下面的不同。
>>> old = [1,2]
>>> new = old
>>> old = [3]
>>> print(new)
[1, 2]
3. count()函数
list1 *= 5
list1.count(3) #数元素3的个数,输出5
4. index()函数
list2 = [123 , [12 , 45] , 'abc']
list2.index('abc') #输出:2,该元素在第2个位置
list3 = [123, 456, 123, 456, 123, 456]
list3.index(123, 1, 3) #从第1到3个位置中,123的索引值,输出:2
5. copy()函数
返回列表的一个拷贝。
分析下列代码,为什么不直接把str1赋给str2?
def f1(str1):
str1 = list(str1)
str2 = str1.copy()
str1.reverse()
if str1 == str2:
print('Yes')
else:
print('No')
6. clear()函数
列表清空,变成一个空列表。
8. 列表解析式
表达形式:
[有关 A 的表达式 for A in B]
例如:
>>> [i**2 for i in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> list1 = [(x,y) for x in range(10) for y in range(10) if x%2 == 0 if y%2!=0]
网友评论