1. 程式人生 > 實用技巧 >python-4-列表操作

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