列表中可以放整型侣颂、浮點型憔晒、字符串和對象拒担,也可以是這幾種類型的混合體
1. 創(chuàng)建列表
member = [123 , 'abc' , 1.45]
empty = []
2. 向列表添加元素:append()从撼、extend()和insert()
append():每次只能加一個元素,參數(shù)是元素
member.append('abc')
len(member) #輸出長度為4
extend():可以添加多個元素婆翔,參數(shù)是列表
member.extend([34 , '哈哈'])
insert():在指定位置添加元素啃奴,參數(shù)是位置和元素
member.insert(0,'456')
#注意#位置是從0開始的纺腊!
3. 從列表獲取元素
member[i] #獲取第i的位置的元素揖膜,注意索引從0開始
4. 從列表刪除元素:remove()壹粟、del趁仙、pop()
remove():參數(shù)為元素名
member.remove(123)
del為語句雀费,后跟列表索引
del member[0] #刪除了第1個元素
del member #刪除整個列表
pop():有返回值盏袄,參數(shù)為索引辕羽,無參時默認列表末尾元素
member.pop() #刪除了末尾元素
name = member.pop() #把末尾元素賦值給name
member.pop(0) #刪除了第1個元素
name = member.pop(0) #把第1個元素賦值給name
實例:在迭代器中刪除列表元素是非常危險的刁愿,因為迭代器是直接引用列表的數(shù)據(jù)進行引用铣口。這里把列表拷貝給迭代器蕾管,然后對原列表進行刪除操作就沒事了掰曾。
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. 成員關(guān)系操作符
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. 列表的成員函數(shù)
如下指令可列出list的所有成員函數(shù)
dir(list)
1. reverse()函數(shù):翻轉(zhuǎn)列表中元素
list4 = [1, 2, 3]
list4.reverse() #list4=[3, 2, 1]
2. sort()函數(shù):排序函數(shù)(默認升序)
list5 = [4, 2, 5]
list5.sort() #升序
list5.sort(reverse = True) #降序
#注意#list = list[:]和list = list的區(qū)別
list6 = list5[:] #列表拷貝
list7 = list5 #列表指向
list5.sort() #list6不變爷贫,list7跟隨list5變
比較上面和下面的不同沸久。
>>> old = [1,2]
>>> new = old
>>> old = [3]
>>> print(new)
[1, 2]
3. count()函數(shù)
list1 *= 5
list1.count(3) #數(shù)元素3的個數(shù)卷胯,輸出5
4. index()函數(shù)
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()函數(shù)
返回列表的一個拷貝苏遥。
分析下列代碼田炭,為什么不直接把str1賦給str2教硫?
def f1(str1):
str1 = list(str1)
str2 = str1.copy()
str1.reverse()
if str1 == str2:
print('Yes')
else:
print('No')
6. clear()函數(shù)
列表清空,變成一個空列表谚殊。
8. 列表解析式
表達形式:
[有關(guān) 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]