python菜单函数_Python 自学笔记- 列表及其内置函数
0. 列表都可以存放一些什么東西?
我們可以說Python 的列表是一個打了激素的數組,如果把數組比喻成集裝箱,那么 Python 的列表就是一個大倉庫,Ta 可以存放我們已經學習過的任何數據類型。
mix = [1,"張三",3.14, [1,"李四", 3]]
#如果想得到列表中某個元素,只需要寫出位置即可。
mix[0] = 1
mix[1] = "張三"
1. 向列表增加元素有哪些方法?append() -- 增加一個元素至列表末尾(如果是兩個元素就會報錯),這個元素可以是任何形式。
extend() -- 擴展一個元素到列表末尾(如果是兩個元素就會報錯),擴展的意思是其可以將2個列表并列。
insert(n,元素) -- 在數列的第n位添加元素
member = [1,2,3]
member.append([4,5])
# 將數列[4,5]做為一個元素,添加進member數列 member = [1,2,3,[4,5,]]
print(member)
member.extend([6,7])
#將數列[4,5]中的每個元素單做單獨元素,添加進member數列member = [1,2,3,[4,5],7,8]
print(member)
member.insert(0,"張三")
# 在member第0位添加元素0 member = ["張三",1,2,3,[4,5],7,8]
print(member)
2. 分片應用
當需要獲取列表中的一個子部分,就需要使用分片方法,語法為[start:stop:step]start: 開始的位置(默認其實位置)
stop: 結束的位置,不會將該位置的數字列入該新列表(默認末尾+1)
step: 間隔,即多少間隔,取一個值,(默認為1)Remark:
1. 步長不能為0,要不就走不動了
2. 步長可以是負數,改變方向(從尾部開始向左走)
list1 = [0,1,2,3,4,5,6,7,8,9]
list2 = list1[2:6]
# List2 選取list1中,從第二個位置開始,到第六個位置結束的子數列,list2 = [2,3,4,5]
list3 = list1[:]
# List3 選取list1中,從第0個位置開始,到第個9+1位置結束的子數列,list3 = [0,1,2,3,4,5,6,7,8,9]
List4 = list1[::2]
# List4 選取list1中,從第0個位置開始,到第個9+1位置結束,每隔2個位置取一個的子數列
#list4 = [0,2,4,6,8]
# 如果我設置start和stop會負數呢,List 5會是多少?
List5 = list1[-1:-5]
Python 的列表很聰明,支持負數索引,如圖:正常索引是從左到右索引,負數索引是從右到左。 所以List5 = [9,8,7,6]
分片完成列表的拷貝 list2 = list1[:],那事實上可不可以直接寫成 list2 = list1 更加簡潔呢?
list1 = [1, 3, 2, 9, 7, 8]
list2 = list1[:]
print(list2)
# 得出的結果是[1, 3, 2, 9, 7, 8]
list3 = list1
print(list3)
# 得出的結果是[1, 3, 2, 9, 7, 8]
# 看上去貌似一樣的,對吧?但事實上呢?我們利用列表的一個小伙伴做下修改
list1.sort()
# sort()是列表的內置排序函數(默認從小到大)
print(list1)
#得到的結果是[1, 2, 3, 7, 8, 9],list1已經從小到大排了個序
print(list2)
#得到的結果[1, 3, 2, 9, 7, 8]
print(list3)
#得到的結果是[1, 2, 3, 7, 8, 9]
#真正的漢奸、墻頭草是list3,Ta跟著list1改變了,這是為什么呢?
Python的變量就像一個標簽,就一個名字而已,貼哪是哪,指哪打哪,如下圖。
這下大家應該明白了吧,在為一個固定的東西指定另一個名字的做法,只是向同一個東西增加一個新的標簽而已。
猜猜下面print(new)是什么結果:
old = [1,2,3,4]
new = old
old= [7]
print(new) # 會打印出什么呢?
Remark:
1.列表的拷貝也可以用列表拷貝函數copy()
2. 如果要對列表進行排序,用sort(),默認從小到大,如果想得出從大到小的排序,可以加入reverse()(反轉函數)
list1 = [1,2,5,4,3,0]
list2 = list1.copy()
print(list2)
#會得到[1,2,5,4,3,0]
list3 = list1.sort()
print(list3)
#會得到[0,1,2,3,4,5]
list4 =list3.reverse()
print(list4)
#會得到[5,4,3,2,1,0]
#簡單的寫法
list 5 = list.sort(reverse = true)
print(list5)
#會得到[5,4,3,2,1,0]
3. 刪除列表的元素有哪些方法?remove(元素) -- 刪除列表中的某一個元素。
del 列表[] -- 刪除列表中某個位置元素或者某段位置元素,符號是[]非().
pop(n) -- 刪除列表中的n位置的元素,不填默認最后一個元素,并賦值
list1 = [0,1,2,3,4,5]
list1.remove(1)
print(list1)
# 得到結果[0,2,3,4,5]
list2 = list1.remove(0)
print(list2) # 猜猜得到什么
print(list1) # 得到結果[2,3,4,5]
number = [0,12,24,36,48]
del number[1]
print(number)
# 得到結果[0,24,36,48]
del number[:2]
print(number)
# 得到結果[36,48]
del number[:] #清空表格,和number.clear()效果一樣
print(number)
# 得到結果[]
member = ["張三","李四","王五","趙二"]
a = member.pop()
print(a) # 猜猜得到什么
print(member) # 得到結果["張三","李四","王五"]
4.其他請問 list1[0] 和 list1[0:1] 一樣嗎?
不一樣,list1[0] 返回第0個元素的值,list1[0:1] 返回一個只含有第0個元素的列表。
List1 = [0,1,2,["today","tomorrow"],4]
list1[0] = 0 #返回第0個元素的值
list1[0:1] = [0] #返回一個只含有第0個元素的列表
#如何將"yesterday"插入到today 前面?
list1[3].insert(0,"yesterday")
print(list1)
#得到結果應該是 [0,1,2,["yesterday","today","tomorrow"],4]
# 如何將列表中元素替換
#將["yesterday","today","tomorrow"] 替換成3
list1[3] = 3
print(list1)
#結果應該是[0,1,2,3,4]
#如果將2,3,4換成3,4,5
list1[2:] = [3,4,5]
print(list1)
#結果應該是[0,1,3,4,5]如果你每次想從列表的末尾取出一個元素,并將這個元素插入到列表的最前邊,你會怎么做?
>>> list1.insert(0, list1.pop())列表中內置函數(沒介紹的)count(元素) -- 計算元素在列表中有多少個
index(元素,start,stop) -- 查找該元素在start位置到stop位置的第幾個(start 和 stop不填默認為全部元素),如果含有多個元素,只返回第一個值。
list1 = [0,1,2]
list2 = [3,4]
list3 = list1 + list2
print(list3) # 結果為 [0,1,2,3,4]
list4 = list2 * 4
print(list4) # 結果為 [3,4,3,4,3,4,3,4]
print(list4.count(3)) # 結果為 4
print(list4.index(4)) # 結果為 1列表列表推導式或列表解析
列表推導式(List comprehensions)也叫列表解析,靈感取自函數式編程語言 Haskell。Ta 是一個非常有用和靈活的工具,可以用來動態的創建列表,語法如:
number1 = [ i*i for i in range(10) ]
print(number1) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
#其實上面上面這個語法相當于
list1 = []
for x in range(10):
list1.append(x**2)
print(list1)
問題:請先在 IDLE 中獲得下邊列表的結果,并按照上方例子把列表推導式還原出來。
>>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
答案:
list1 = []
for x in range(10)
for y in range(10)
if (x%2==0) and (y%2 !=0):
list1.append((x,y))
print(list1)
問題:請使用列表推導式補充被涂掉的部分
答案:list3 = [name+":"+slogan[2:] for slogan in list1 for name in list2 if slogan][0]=name[0]]
總結
以上是生活随笔為你收集整理的python菜单函数_Python 自学笔记- 列表及其内置函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言文件与数组之间输入输出操作
- 下一篇: pb11 打印 自定义纸张_pb自定义纸