zoukankan      html  css  js  c++  java
  • 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()+".
    ")
    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语句中的换红字符" "在每次迭代结束后都插入一个空行。

    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)

     4.4 使用列表的一部分

    4.4.1 切片

    创建切片,可指定要使用的第一个元素和最后一个元素索引。与函数range()一样,python在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0,1,和2的元素。例:

    players=['charles','maetina','michael','florence','eli']
    print(players[0:3])
    输出
    ['charles', 'maetina', 'michael']

    该处代码输出为列表的一个切片,其中包含三名队员。

    故可生成列表的任何子集,例:如果你需要提取列表的第2~4个元素,可将起始索引指定为1,并将终止索引指定为4.例:print( players[1:4])

    如果你没有指定第一个索引,python将自动从头开始: print(players[:4]). 同理,省略终止索引,切片列表价格终止于末尾。

    4.4.2 遍历切片

    如果要遍历列表的部分元素,可在for循环中使用切片。例:

    players=['charles','maetina','michael','florence','eli']
    print("Here are the first three players in my team:")
    for player in players[:3]:
      print(player .title())
    输出:
    Here are the first three players in my team:
    Charles
    Maetina
    Michael

    切片在很多情况下适用。例,编写游戏时,可以在玩家退出游戏时将其最终得分加到一个列表中。然后,为获取该玩家的三个最高得分,你可以将该列表按降序排列,在创建一个只包含前三个得分的切片。处理数据时,可使用切片来进行批量处理;编写web应用程序时,可使用切片来分页显示信息,并在每页显示数量合适的信息。

     4.4.3 复制列表

    要复制列表,可以创建一个包含整个列表的切片,方法是同事省略起始索引和终止索引([:])。这让python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。例:

    my_foods=['pizza','falafel','carrot cake']
    friend_foods=my_foods[:]
    my_foods.append('cannoli')
    friend_foods.append('ice cream')
    print("my favorite fodds are:")
    print(my_foods)
    
    print("
    My friend's favorite foods are:")
    print(friend_foods)
    输出结果:
    my favorite fodds are:
    ['pizza', 'falafel', 'carrot cake', 'cannoli']
    
    My friend's favorite foods are:
    ['pizza', 'falafel', 'carrot cake', 'ice cream']

    注:假如我们只是简单的将my_foods赋给friend_foods,就不能得到两个列表。因为简单赋值得语法实际上是糖python将新变量friend_foods关联到包含my_foods中的列表,因此这两个变量都指向同一个列表。

    4.5元组

    列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的,这对处理网站的用户列表或游戏中的角色列表至关重要。然而,有时候你需要创建一系列不可修改的元素,元组可以满足这种需求。Python将不嫩修改的值成为不可以变的,二不可变的列表称为元组。

    4.5.1 定义元组

    元组和列表类似,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。例:

    dimensions=(200,50)
    dimensions[0]=250

    我们首先定义了dimensions,为此,使用了圆括号而不是方括号。当对第一个元素进行修改时,导致python返回类型错误消息,因为试图修改元组的操作是被禁止。

    4.5.2 遍历元组中的所有值

    像列表一样,也可以使用for循环来遍历元组中的所有值

    dimensions=(200,50,30)
    for dimension in dimensions:
     print(dimension)
    输出
    200
    50
    30

    4.5.3 修改元组变量

    虽然不能修改元组的元素,但可以可给存储元组的变量赋值。因此,如果要修改前诉矩形的变量尺寸,可重新定义整个元组;

    dimensions=(200,50,30)
    print("original dimensios:")
    for dimension in dimensions:
     print(dimension)
    
    dimensions=(400,100)
    print("
    Modified dimensions:")
    for dimension in dimensions:
     print(dimension)
    输出结果

    original dimensios:
    200
    50
    30

    Modified dimensions:
    400
    100

    首先定义一个元组,并将其存储尺寸输出;接下来,将一个新元组存储到变量dimension中,然后输出新尺寸,python不会报任何错误,因为给元组变量赋值是合法的。

    相比列表,元组是更简单的数据结构,如需要存储的一组值在程序的整个周期内不变,可使用元组。

  • 相关阅读:
    开涛spring3(6.5)
    开涛spring3(6.4)
    开涛spring3(6.3)
    开涛spring3(6.2)
    开涛spring3(6.1)
    开涛spring3(5.4)
    开涛spring3(5.3)
    开涛spring3(5.1&5.2)
    开涛spring3(4.4)
    开涛spring3(4.3)
  • 原文地址:https://www.cnblogs.com/Mack-Yang/p/9280791.html
Copyright © 2011-2022 走看看