1. 插入元素
- arr.append() #在列表的最后一個(gè)位置插入元素
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles.append('ducati')
print(motorcycles)
- arr.insert(position, ele) #在指定位置插入元素。這個(gè)指定位置是原本列表的位置,不是新元素的位置。插入新元素后,其他元素往右邊移動(dòng)一個(gè)位置。position為正數(shù)或者負(fù)數(shù)結(jié)果稍微有點(diǎn)不一樣
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(0, "Hao jue")
print(motorcycles)
#打印出['Hao jue', 'honda', 'yamaha', 'suzuki']
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(-1, "Hao jue")
print(motorcycles)
#打印出['honda', 'yamaha', 'Hao jue', 'suzuki']
2. 刪除元素
- list.pop() #彈出末尾的最后一個(gè)元素,返回彈出的元素。list也已經(jīng)被更新
- list.pop(position) #彈出指定位置的元素,返回彈出的元素。list也已經(jīng)被更新
- del list[0] #刪除指定位置的元素,返回彈出的元素。list也已經(jīng)被更新
- list.remove(ele) #按照值來刪除元素。如下代碼會報(bào)錯(cuò),按照值來刪除元素,list必須有這個(gè)元素。僅僅刪除一次。如果要多次刪除,就需要用循環(huán)。
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.remove("nih")
print(motorcycles)
3. 簡單排序
- list.sort()
- cars.sort(reverse=True)
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True) #按照字母降序排列。永久性改變一個(gè)list。這個(gè)方法返回None。
cars.sort() #按照字母順序升序
- sorted()方法。這個(gè)方法返回一個(gè)新的數(shù)組,原來的數(shù)組不變
cars = ['bmw', 'audi', 'toyota', 'subaru']
sorted(cars)
sorted(cars, reverse=True)
- list.reverse() 反轉(zhuǎn)列表。reverse()不是指按與字母順序相反的順序排列列表元素,而只是反轉(zhuǎn)列表元素的排列順序。方法reverse()永久性地修改列表元素的排列順序,但可隨時(shí)恢復(fù)到原來的排列順序,為此只需對列表再次調(diào)用reverse()即可。
4. 數(shù)值列表
- range(1, 10),返回的不是一個(gè)list。需要用list(range(1,))來返回list。
- 對于需要用到index來訪問list的情況,或者需要訪問數(shù)字的情況下,可以用如下:
for i in range(1,5):
print(cats[i])
- 在這個(gè)示例中,range()只是打印數(shù)字1到4,函數(shù)range()讓Python從你指定的第一個(gè)值開始數(shù),并在到達(dá)你指定的第二個(gè)值后停止,輸出不包含第二個(gè)值(這里為5)。要打印數(shù)字1~5,需要使用range(1,6)。
- 使用函數(shù)range()時(shí),還可指定步長。
for even in range(2,11,2):
print(even)
- 步長可以為負(fù)數(shù)。如下打印出2和1
- 通過這個(gè),可以實(shí)現(xiàn)反向訪問list。
for even in range(2,0,-1):
print(even)
5.對數(shù)字列表進(jìn)行簡單的統(tǒng)計(jì)計(jì)算
- 可以使用min、max、sum函數(shù)。如果傳入的list為空,就會報(bào)錯(cuò)。
digits = [1,2,3,4,5,6]
print(digits, min(digits), max(digits), sum(digits))
sum(range(1,5))
6. 列表解析
- 列表解析讓你只需編寫一行代碼就能生成列表。
squares = [value**2 for value in range(1,11)]
print(squares) #打印出[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
- 要使用這種語法,首先指定一個(gè)描述性的列表名,如squares;然后,指定一個(gè)左方括號,并定義一個(gè)表達(dá)式,用于生成你要存儲到列表中的值。如上代碼中,表達(dá)式為value**2,它計(jì)算平方值。
- 接下來,編寫一個(gè)for循環(huán),用于給表達(dá)式提供值,再加上右方括號。for循環(huán)為for value in range(1,11),它將值1~10提供給表達(dá)式value**2。請注意,這里的for語句末尾沒有冒號。
- 表達(dá)式還可以是一個(gè)函數(shù)。
- 列表解析事實(shí)上就是一個(gè)for循環(huán)。
sums = [sum(range(1,i+1)) for i in range(1,11)]
def get_sum(i):
return sum(range(1, i + 1))
sums = [get_sum(i) for i in range(1,11)]
print(sums)
- 注意sep這個(gè)參數(shù),用來給print方法指定分割符。默認(rèn)是空格。
digits = list(range(1, 1000001))
print(min(digits), max(digits), sum(digits), end=";", sep=";")
帶if的列表解析
- 帶有if的列表解析。很容易理解,滿足if條件的value才保留下來。
- 這里可以用步長來處理。
digits = [i for i in range(3,31) if i%3==0]
print(digits) #[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
多變量的列表解析
digits = [(x,y) for x in range(1,5) for y in range(1,6) if y >=2 ]
print(digits)
#返回[(1, 2), (1, 3), (1, 4), (1, 5), (2, 2), (2, 3), (2, 4), (2, 5)]
7. 切片
- 訪問list的指定范圍的部分元素,稱之為切片。
- list[start:end]返回一個(gè)新的list。
- 要?jiǎng)?chuàng)建切片,可指定要使用的第一個(gè)元素和最后一個(gè)元素的索引。與函數(shù)range()一樣,Python在到達(dá)你指定的第二個(gè)索引前面的元素后停止。要輸出列表中的前三個(gè)元素,需要指定索引0~3,這將輸出分別為0、1和2的元素。
- 當(dāng)start為空,表示從頭開始。end為空,表示直到結(jié)尾(包含最后一個(gè))。
- start和end都可以為空,表示全部的list元素,用來list復(fù)制
- 當(dāng)end超過list元素個(gè)數(shù)的時(shí)候,不會報(bào)錯(cuò),會把start開始的全部元素都切片出來。
- 同樣的,start和end都可以用負(fù)數(shù)。
- 當(dāng)start大于end的時(shí)候,不會報(bào)錯(cuò),返回空list,即[]
players = ["charles", "martina", "michael", "florence", "eli"]
for player in players[0:3]:
print(player)
new_players = players[:]
8.元組(tuple)
- python用()表示一個(gè)元組。列表是可以修改的,而不可變的列表被稱為元組。
- 元組的元素不能修改,但是存儲元組的變量是可以重新賦值的
dimensions = (200, 50)
print(dimensions)
dimensions = (200, 500)
print(dimensions)
9. 數(shù)組合并
list1 = [1, 2, 3]
list2 = [4, 5, 6]
merged_list = list1 + list2
##或者merged_list = list1.extend(list2)
print(merged_list) # 輸出: [1, 2, 3, 4, 5, 6]