python-4-列表操作
遍歷整個列表
>>> magicians = ['alice','david','carolina']
>>> for magician in magicians:
... print(magician)
...
alice
david
carolina
-
深度的研究迴圈
在前面使用簡單迴圈的時候,python首先讀取其中的第一行程式碼
for magician in magicians:
這行程式碼讓python獲取列表magicians中的第一個值(‘Alice‘),並將其儲存到變數magician中,再執行下面的程式碼
print(magician)
它讓python列印magician的值,依然是’alice‘。鑑於該列表還有其他值,python返回第一行:
for magician in magicians:
python獲取列表中下一個名字’david‘,並將其儲存在變數magician中,在執行下面的程式碼:
print(magician)
python再次列印’david‘的值,接下來python再次執行整個迴圈,列印最後一個變數的值,列表中沒有其他的值了,for迴圈結束
注意:編寫for迴圈時。對於用於儲存列表中每個值的臨時變數,可指定任意的名稱。
-
在for迴圈中執行更多的操作
在for迴圈中,可對每一個元素執行任何操作
>>> magicians = ['alice','david','carolina'] >>> for magician in magicians: ... print(magician.title()) ... Alice David Carolina
-
避免縮排錯誤
在使用cmd或者記事本編寫python程式時,不要忘記使用tab縮排。
建立數字列表
-
使用函式range()
>>> for value in range(1,5): ... print(value) ... 1 2 3 4
-
使用range()建立數字連結串列
可用函式list()將range()的結果直接轉換為列表
>>> list(range(0,4)) [0, 1, 2, 3]
使用range()函式還可以指定步長,比如輸出1~11之間的偶數;
>>> num=list(range(2,11,2)) >>> print(num) [2, 4, 6, 8, 10]
在這個示例中,range()從2開始數,知道達到或超過終值
使用range()函式,幾乎能夠建立任何需要的數字集,例如,建立一個列表,其中包含前十個整數的平方(即1~10)
,在Python中,使用**表示乘方運算:
>>> squares = [] >>> for n in range(1,11): ... square = n**2 ... squares.append(square) ... >>> print(squares) [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
-
對數字列表執行簡單的統計計算
>>> digits = [1,2,3,4,5,6,7,8,9,0] >>> min(digits) 0 >>> max(digits) 9 >>> sum(digits) 45
列表解析
前面介紹的生成列表squares的方式包含了三四行程式碼,而列表解析讓你只需編寫一行程式碼就能生成這樣的列表。列表解析將for迴圈和建立新元素的程式碼合成一行,並自動附加新元素。
>>> squares = [value**2 for value in range(1,11)]
>>> print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
要使用這種語法,首先指定一個描述性的列表名,如squares;然後指定有一個左方括號,並定義一個表示式,用於生成你要儲存到列表中的值。在這個示例中,表示式為value**2,它計算平方值。接下來,便攜一個for迴圈,用於給表示式提供值,再加上右方括號。
注意:這裡的for迴圈句尾沒有括號。
使用列表的一部分
- 切片
recv字串截斷,awd中pwn1需要將得到的資料進行分離,由Python進行加和再send回去十個回合才能得到flag下面是對python切片語法的學習:
>>> num = ['1','2','3','4','5']
>>> print(num[1:3])
['2', '3']
如果你沒有指定第一個索引,python將自動從表頭開始,第二個索引也是同樣的道理。
無論列表有多長,這種語法都可以讓你輸出特定位置到列表末尾的所有元素:
如果第一個索引是負數的話,python會從表尾開始取絕對值數的位元組;如果第二個索引是負數,python會從表頭開始,一直取到負數的位置
#從後往前數,倒數第三個位置是-3
>>> print(num[-3:])#從-3位置一直到末尾的數
['3', '4', '5']
#從後往前數,最後一個位置是-1
>>>print(num[:-1])#從位置0到-1之前的數
['1', '2', '3', '4']
- 便利切片
num = ['hello','python','world','!']
for n in num[:3]:
print(n.title())
Hello
Python
World
>>>
可以看到這裡只便利了列表的前三個元素
- 複製列表
num = ['hello','python','world','!']
newnum = num[:]
print(num)
print(newnum)
['hello', 'python', 'world', '!']
['hello', 'python', 'world', '!']
>>>
元組
元組看起來猶如列表,但使用圓括號而不是方括號來標識,列表是可以修改的,這對處理網站的使用者列表或遊戲中的角色列表至關重要。然而,有時候你需要建立一系列不可以修改的元素。
python將不能修改的值稱為不可變的,而不可變的列表被稱為元組。
-
定義元組
除了使用圓括號來表示,用起來和列表完全一樣
>>> dimensions = (200 , 50) >>> print(dimensions[0]) 200 >>> print(dimensions[1]) 50
嘗試對其值進行修改
>>> dimensions[0]=220 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
-
元組的遍歷
>>> for dimension in dimensions: ... print(dimension) ... 200 50
-
修改元組變數
如果要修改前邊定義的元組,可以重新定義元組
>>> dimensions = (200 , 50) >>> for dimension in dimensions: ... print(dimension) ... 200 50 >>> dimensions = (400,100) >>> for dimension in dimensions: ... print(dimension) ... 400 100