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