class4-操作列表

经常需要遍历整个列表中的所有元素,对每个元素执行相同的操作。例:在游戏中,可能需要将每个界面元素平移相同的距离;对于包含数字的列表,可能需要对每个元素执行相同的统计运算;在网站中,可能需要显示文章中的每个标题。需要对列表中的每个元素都执行相同的操作时,可使用python中的for循环。

假设我们有一个魔术师名单,需要将其中的的每个魔术师的名字都打印出来。为此,我们可以分别获取名单中的每个名字,但是这种做法会导致多个问题。例:如果名单很长,将包含大量重复的代码。另外,每当名单的长度发生变化时,都必须修改代码。为此,通过使用for循环,可让python处理这些问题。

magicians.py

magicians=['alice','david','carolina']
for magician in magicians:  #从列表中红magicians中取出一个名字,并将其存储在变量magician中。
print(magician)

输出:

alice
david
carolina

先定义一个列表。然后定义一个for magician循环:这行代码rang pytho从列表中取出一个名字,并将其存储在变量magician中。python 输出前面存储变量magician中的名字。即对于列表中的每个名字,python都将重复执行命令:对于列表magicians中的每位魔术师,都将其名字输出。

4.1.1深入研究循环

对于列表的每个元素,都将执行制定的步骤,而不管包含多少个元素。另外,编写for循环时,对于用于存储列表中的每个值的零时变量,可指定任何名称。例:

for dog in dogs
for item in list_of_items:

4.1.2 在for循环中执行更多的操作

在for循环中,可对每个元素执行任何操作。例:

magicians=['alice','david','carolina']
for magician in magicians:
     print(magician.title()+", that was a great trick!")
     print("i can't wait to see your next trick, "+magician.title()+".\n")
print("Thank you, everyone.That was a great magic show!")
结果输出:
Alice, that was a great trick! i can
't wait to see your next trick, Alice. David, that was a great trick! i can't wait to see your next trick, David. Carolina, that was a great trick! i can't wait to see your next trick, Carolina. Thank you, everyone.That was a great magic show!

在代码for magician in magicians后面,每个缩进的代码都是循环的一部分,且将针对列表中的每个值都执行一次。因此,可对列表中的每个值都执行任意次数。

PS:由于两条print语句都缩进了,因为他们讲都针对列表中的每位魔术师执行一次。第二条print语句中的换红字符"\n"在每次迭代结束后都插入一个空行。

4.1.3 在for 循环结束后执行一些操作

 在for循环后面,没有缩进的代码都只执行一次,不会重复执行。使用for循环处理数据是一种对数据执行整体操作的方式。

 4.2 避免缩进错误

python根据缩进来判断代码行与钱一个代码的行的关系,在前面的示例中,向各位魔术师显示消息的代码行是for循环的一部分,因为他们缩进了。python通过使用缩进让代码更易读;简单说,他要求你使用缩进让代码整洁而结构清晰。以下为常见缩进错误:

1>. 忘记缩进:将紧跟在for语句后面的代码进行缩进,可消除类似缩进错误。

2>.忘记缩进额外的行代码: 有有时候循环运行而不会报错,但结果出乎意料(会出现逻辑错误)。在循环中执行多项任务,缺忘记缩进其中一些代码时会出现。

3>.不必要的缩进:只要在for 循环中对每个元素执行的代码缩进

4>.遗漏冒号:for语句末尾的冒号告诉python,下一行是循环的第一行,如果遗漏冒号,将导致语法错误。

 4.3 创建数值列表

4.3.1 使用range()函数

Python函数rang()能轻松的生成一系列数字,例:

for value in range(1,5):
 print(value)

上述代码回打印数字1~4(不包括5),这是在编程语言中经常看到的差1行行为结果。函数range()让python从你指定的第一个值开始数,并达到第二个值后停止,因此输出不包括第二个值(这里为5).

使用range()时,如果输出 不符合预期,请尝试讲制定的值加1或者减1、

4.3.2 使用range()创建数字列表

要创建数字列表,可使用函数list()将range()的结果直接转换为列表。如果建range()作为list()的参数,输出将为一个数字列表。例:

numbers= list (range(1,6))
print(numbers)
输出结果
[1, 2, 3, 4, 5]

使用函数range()时,还可制定步长。例:下列代码输出1~10以内的偶数:

even_numbers= list (range(2,20,2)) #起始数为2,终止数值为20,步长为2,
print(even_numbers)
输出结果
[2, 4, 6, 8, 10, 12, 14, 16, 18]

在此示例中,函数range()从2开始数,然后不断加2,直到达到或者超过终值11。

使用函数range()几乎能够创建任何需要的数集,例:如何创建一个列表,其中包含前10个整数(1~10)的平方呢?在python中,两个星号(**)表示乘方运算。

squares=[]    #创建空列表
for value in range(1,11):   #使用函数range()让python遍历1~10的值
    square= value**2   #计算当前的平方,并将结果存储到square中,,,,为简洁,可省略临时变量直接为 squares.append(value**2)
    squares.append(square) #将计算得到的平方值附加到列表的square末尾
    
    print(squares)

输出结果:
[1]
[1, 4]
[1, 4, 9]
[1, 4, 9, 16]
[1, 4, 9, 16, 25]
[1, 4, 9, 16, 25, 36]
[1, 4, 9, 16, 25, 36, 49]
[1, 4, 9, 16, 25, 36, 49, 64]
[1, 4, 9, 16, 25, 36, 49, 64, 81]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

创建更复杂的列表时,可使用临时变量或者直接带入。使用临时变量会让代码更易读;而在其他情况下,这样做只会让代码无谓的变长。

4.3.3 对数字列表执行简单的统计计算

有几个专门用于处理数字列表的python函数。详见注释

例:max,min,sum

4.3.4 列表解析

前面介绍声场的列表squares的方式包含三四行代码,而列表解析让你值需编写一行代码就能生成这样的列表。列表解析将for循环和创建的新元素的代码合并成一行,并自动附加新元素。面向初学者的书籍并非都会介绍列表解析。下面示例使用列表解析创建平方数。例:

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

要使用这种语法,首先指定一个描述性列表名,如squares;然后,指定一个左方括号,并定义一个表达式提供值,再加上右括号。在此示例中,for循环为for value in range(1,11),它将值1~10提供给表达式value**2.  注意,这里的for语句末尾没有冒号。代码比较:

squares=[]    
for value in range(1,11):   
    square= value**2  
    squares.append(square) 
print(squares) squares=[value**2 for value in range(1,11)] print(squares)

猜你喜欢

转载自www.cnblogs.com/Mack-Yang/p/9280791.html
今日推荐