操作列表
1. for循環(huán)遍歷列表
for循環(huán)遍歷列表一般由下面元素組成:
-
for
關(guān)鍵詞 - 一個變量
-
in
關(guān)鍵詞 - 列表名
- 冒號
- 縮進(jìn)的語句塊
輸入:
names=['tom','jack','lisa','mike','andy']
count=0
for name in names: #一定要有冒號
print('\nhow do you do, '+name) #有縮進(jìn)堡称,循環(huán)內(nèi)容
print("Let's go to learn python!") #有縮進(jìn),循環(huán)內(nèi)容
count=count+1
print('\npython is the best programming language in this world') #不在循環(huán)中
print('\ncount='+str(count)) #遍歷完列表中所有5個元素
輸出:
c:\py>names_for
how do you do, tom
Let's go to learn python!
how do you do, jack
Let's go to learn python!
how do you do, lisa
Let's go to learn python!
how do you do, mike
Let's go to learn python!
how do you do, andy
Let's go to learn python!
python is the best programming language in this world
count=5
注意:
- 只有縮進(jìn)的語句才會被循環(huán)
- for語句最后有冒號
- 最好for后面的變量名為單數(shù)形式涤姊,列表名為復(fù)數(shù)形式宵晚,這樣可以使程序更清楚采缚。
2. 用range()
函數(shù)產(chǎn)生一個數(shù)字列表
range()
函數(shù)解析:
range(x,y,z)
函數(shù)有3個參數(shù)鹰椒,分別有以下作用:
- x表示數(shù)列從x開始纲堵,包括x
- y表示到y(tǒng)或超過y結(jié)束纤房,不包括y
- z表示步長
注意:range()
函數(shù)并不產(chǎn)生列表,他只是按參數(shù)要求舶沛,生成一系列數(shù)嘹承。要想轉(zhuǎn)為列表,需使用list()
函數(shù)如庭。
輸入:
squres=[]
for value in range(1,11,2):
print(value)
squres.append(value**2) #將1-11之間的素數(shù)的平方添加到squres列表中
print(list(range(1,11,2))) #需要使用list()函數(shù)將range()產(chǎn)生的一系列數(shù)轉(zhuǎn)換為列表
print(squres) #打印squres列表
輸出:
c:\py>range
1
3
5
7
9
[1, 3, 5, 7, 9]
[1, 9, 25, 49, 81]
可以發(fā)現(xiàn)range產(chǎn)生了一系列數(shù):1,3,4,7,9叹卷。
3. 列表解析
列表解析是生成列表的簡潔方法,他的作用和上面的代碼一樣坪它,但是程序會簡潔很多骤竹。
輸入:
squres=[value**2 for value in range(1,11,2)]
print(squres) #打印squres列表
輸出:
c:\py>list_comprehension
[1, 9, 25, 49, 81]
4. 使用部分列表
(1)切片
輸入:
names=['tom','jack','lisa','mike','andy','ammy','peter']
print(names)
print(names[0:2]) #打印前2個
print(names[1:3]) #打印索引為1到索引為3-1的元素
print(names[3:]) #打印索引為3到最后
print(names[:3]) #打印列表頭到索引為3-1的元素
print(names[-3:]) #打印索引為-3到最后
print("\nhere are the last 4 names")
for name in names[-4:]:
print (name)
輸出:
c:\py>names_slice
['tom', 'jack', 'lisa', 'mike', 'andy', 'ammy', 'peter']
['tom', 'jack']
['jack', 'lisa']
['mike', 'andy', 'ammy', 'peter']
['tom', 'jack', 'lisa']
['andy', 'ammy', 'peter']
here are the last 4 names
mike
andy
ammy
peter
注意: 切片 [x:y] 是指索引為x到索引為y-1之間的元素。
5. 復(fù)制列表
一定要使用切片來復(fù)制列表
輸入:
My_foods=['pizza','cake','ice cream']
friend_foods=My_foods[:] #使用切邊復(fù)制列表
other_foods=My_foods #注意往毡,這里并沒有用切片蒙揣,只是將兩個列表關(guān)聯(lián)起來
friend_foods.append('apple')
My_foods.append('orange')
print('My favorite foods:')
print(My_foods)
print("\nMy friend's favorite foods:")
print(friend_foods)
print("\nothers favorite foods:")
print(other_foods) #列表與My_foods同步
輸出:
c:\py>copy_lists
My favorite foods:
['pizza', 'cake', 'ice cream', 'orange']
My friend's favorite foods:
['pizza', 'cake', 'ice cream', 'apple']
others favorite foods:
['pizza', 'cake', 'ice cream', 'orange']
注意: other_foods=My_foods
并不能將My_foods列表賦值給other_foods列表,只是將兩個變量關(guān)聯(lián)起來开瞭,指向同一個列表懒震。由輸出可以看出,只將My_foods列表附加一個orange元素嗤详,但other_foods列表的元素與其同步變換个扰。
6. 元素不可變的列表--元組
- 定義時,將列表的方括號換成圓括號葱色,列表即變成元組递宅。
- 元組的元素不可變,但可以對整個變量重新賦值苍狰。
- 元組可以被當(dāng)作列表办龄,用方括號進(jìn)行切片。
輸入:
My_foods=('pizza','cake','ice cream','apple')
print('My_foods:')
print(My_foods)
for food in My_foods[-2:]:
print(food)
#元組里的元素不可以改變淋昭,但是元組可以重新被賦值
My_foods=('pizza','cake','milk','orange')
print('\nMy_foods:')
print(My_foods)
c:\py>tuple
My_foods:
('pizza', 'cake', 'ice cream', 'apple')
ice cream
apple
My_foods:
('pizza', 'cake', 'milk', 'orange')
milk
orange
for food in My_foods[-2:]:
print(food)
輸出:
c:\py>tuple
My_foods:
('pizza', 'cake', 'ice cream', 'apple')
ice cream
apple
My_foods:
('pizza', 'cake', 'milk', 'orange')
milk
orange