python數值列表的創建和使用


需要存儲一組數字的原因有很多,例如,在游戲中,需要跟蹤每個角色的位置,還可能需要跟蹤玩家的幾個最高得分。

在數據可視化中,處理的幾乎都是由數字(如溫度、距離、人口數量、經度和緯度等)組成的集合

列表非常適合用於存儲數字集合,而Python提供了很多工具,可幫助高效地處理數字列表。

使用函數range()

Python函數range()能夠生成一系列的數字。例如,可以像下面這樣使用函數range()來打印一系列的數字:

for value in range(1,5):

    print(value)

上述代碼好像應該打印數字1~5,但實際上它不會打印數字5

>>>

1

2

3

4

>>>

函數range()從指定的第一個值開始數,並在到達指定的第二個值后停止,因此輸出不包含第二個值(這里為5。要打印數字1~5

需要使用range(1,6)使用range()時,如果輸出不符合預期,請嘗試將指定的值加1或減1

使用range()創建數字列表

要創建數字列表,可使用函數list()range()的結果直接轉換為列表。

如果將range()作為list() 的參數,輸出將為一個數字列表。

在前一節的示例中,打印了一系列數字。要將這些數字轉換為一個列表,可使用list()

numbers = list(range(1,6))

print(numbers)

結果如下:

>>>

[1, 2, 3, 4, 5]

>>>

使用函數range()時,還可指定步長

例如,下面的代碼打印1~10內的偶數:

even_numbers = list(range(2,11,2))

print(even_numbers)

在這個示例中,函數range()2開始數,然后不斷地加2,直到達到或超過終值(11),因此輸出如下:

>>>

[2, 4, 6, 8, 10]

>>>

使用函數range()幾乎能夠創建任何需要的數字集,例如,如何創建一個列表,其中包含前10個整數(即1~10)的平方呢?

Python中,兩個星號(**)表示乘方運算。下面的代碼演示了如何將前10個整數的平方加入到一個列表中:

squares = []

for value in range(1,11):

    square = value**2

    squares.append(square)

print(squares)

首先創建了一個空列表;接下來,使用函數range()Python遍歷1~10的值。

在循環中,計算當前值的平方,並將結果存儲到變量square中。然后,將新計算得到的平方值附加到列表squares 末尾。

最后,循環結束后,打印列表squares

>>>

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

>>>

為讓這些代碼更簡潔,可不使用臨時變量square ,而直接將每個計算得到的值附加到列表末尾:

squares = []

for value in range(1,11):

    squares.append(value**2)

print(squares)

在循環中,計算每個值的平方,並立即將結果附加到列表squares的末尾。

創建更復雜的列表時,可使用上述兩種方法中的任何一種。

有時候,使用臨時變量會讓代碼更易讀;

而在其他情況下,這樣做只會讓代碼無謂地變長。

首先應該考慮的是,編寫清晰易懂且能完成所需功能的代碼;等到審核代碼時,再考慮采用更高效的方法。

對數字列表執行簡單的統計計算

有幾個專門用於處理數字列表的Python函數

找出數字列表的最大值、最小值和總和:

digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

print(min(digits))

print(max(digits))

print(sum(digits))

>>>

0

9

45

>>>

列表解析

前面介紹的生成列表squares的方式包含三四行代碼,而列表解析讓你只需編寫一行代碼就能生成這樣的列表。列表解析將for循環和創建新元素的代碼合並成一行,並自動附加新元素。

squares = [value**2 for value in range(1,11)]

print(squares)

要使用這種語法:

首先指定一個描述性的列表名,如squares

然后,指定一個左方括號,並定義一個表達式,用於生成你要存儲到列表中的

在這個示例中,表達式為value**2 ,它計算平方值。

接下來,編寫一個for 循環,用於給表達式提供值,再加上右方括號

在這個示例中,for 循環為for value in range(1,11) ,它將值1~10提供給表達式value**2

請注意,這里的for 語句末尾沒有冒號

squares = [value/2 for value in range(1,11)]

print(squares)

print(squares[len(squares)-1])

結果:

[0, 1, 1, 2, 2, 3, 3, 4, 4, 5]

5

要創建自己的列表解析,需要經過一定的練習,

當編寫三四行代碼生成列表有點繁復時,就應考慮創建列表解析了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM