十三、操作列表

作者: 焰火青春 | 来源:发表于2017-11-18 22:20 被阅读33次

    1、操作列表

    1.1、遍历列表

    有时需要对列表中的每个元素进行操作,不可能单独地写一行代码去取出每个元素,再进行操作,这样既增加了代码量也浪费了大多时间。

    这时我们可以使用for 循环遍历列表每个元素,再进行操作:

    # 遍历魔术师名单,对每个魔术师说几句话
    magicians = ['alice', 'david', 'carolina']
    for magician in magicians:    # 在使用for循环时,可以使用单数复数的形式,如(for dog in dogs:)
        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!
    

    1.2、创建数字列表

    使用range()函数可以生成一系列数字,再将数字存储到列表中。

    1.2.1、使用range()创建数字列表

    可使用list()将range()的结果直接转换为列表。

    numbers = list(range(1, 6))
    numbers_1 = list(range(2, 11, 2))  # range()还可以指定步长,第一二个参数为数字区间,第三个为递进的不长
    print(numbers)
    print(numbers_1)
    
    [1,2,3,4,5]
    [2,4,6,8,10]
    

    函数range()几乎可以闯将任何需要的数字集,如何创建一个列表:

    # 创建一个1-10的10个整数的平方的列表
    squares = []
    for value in range(1, 11):
        # square = value**2    # 使用临时变量square,将每个数的平方存储在其中
        # squares.append(square)  # 再通过append()方法将元素添加到列表squares末尾,这两步可以简写为如下一步
        squares.append(value**2)    # 简写
    print(squares)
    
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    

    使用临时变量,有时可以使代码更易读,但也会增加代码量,所以在写代码时,首先应该考虑编写清晰易懂且能完成所需功能的代码,等到审核代码时,再采用更高效的方法。

    1.2.2、对数字列表进行简单计算

    digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    min(digits)            # 找出列表中最小数
    0
    
    max(digits)            # 找出列表中最大数
    9
    
    sum(digits)            # 对列表中的数求和
    45
    

    1.3、列表解析

    列表解析也可以称为列表推导式,它可以将原有的三四行的代码简写成一行,实现同样的效果,其格式为将for 循环和创建新元素的代码合并成一行,并自动添加新元素。

    squares = [value**2 for value in range(1, 11)]
    print(squares)
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    
    # 首先定义一个表达式:value**2
    # 用于生成要存储到列表中的值,编写一个for循环,用于给表达式提供值
    
    a = [i for i in range(10) if not (i % 2) and (i % 3)]  # not等级高于and
    print(a)          # 能被2整除的数(0,2,4,6,8)为真,不能被3整除的数(1,2,4,5,7,8)为真
    # 都为真则只有2、4、8时
    
    # 相当于
    a = []
    for i in range(10):
        if i % 2 == 0 and i % 3 != 0:
            a.append(i)
    print(a)
    
    [2, 4, 8]
    
    # 创建一个列表1-20(含20)内的多有奇数
    a = [i for i in range(1, 21, 2)]
    print(a)
    
    # 创建一个列表,包含3-30内所以能被3整除的数字,并使用for循环打印
    a = [i for i in range(3, 30) if (i % 3 == 0)]
    print(a)
    
    # 创建一个1-10所有整数的立方的列表,并使用for循环打印
    a = [i**3 for i in range(1, 11)]
    print(a)
    

    1.4、列表切片

    在前面学会了访问列表的单个元素,而使用列表切片可访问列表的部分或者全部元素。

    # 采取元素索引值的方式访问,含开始索引值,不含结束索引值
    lists = [1, 2, 3, 4, 5]
    print(lists[0:3])      # 访问0-2的元素
    print(lists[1:4])      # 访问1-3的元素
    print(lists[:])        # 访问整个列表元素
    print(lists[2:])       # 访问2到列表末尾的所有元素
    print(lists[:4])       # 访问0到3的所有元素
    print(lists[-3:])      # 访问倒数三个元素
    
    [1, 2, 3]
    [2, 3, 4]
    [1, 2, 3, 4, 5]
    [3, 4, 5]
    [1, 2, 3, 4]
    [3, 4, 5]
    
    

    1.4.1、遍历切片

    要遍历列表的部分元素,可使用for循环。

    lists = [1, 2, 3, 4, 5]
    for i in lists[-3:]:
      print(a)
    3
    4
    5
    

    1.4.2、复制列表

    我们经常需要根据既有列表创建全新的列表,复制列表可以分为两种:

    • 列表切片

    复制的新的列表为原有列表的副本,不会随原列表改变而改变

    • 直接赋值

    赋值的新列表,会虽原列表改变而改变

    my_foods = ['pizza', 'falafel', 'carrot cake']
    friend_foods = my_foods[:]    # 列表切片
    friend_food = my_foods        # 赋值
    my_foods.append('fish')       # 原列表添加新元素
    
    print(my_foods)
    print(friend_foods)
    print(friend_food)
    
    ['pizza', 'falafel', 'carrot cake', 'fish']           
    ['pizza', 'falafel', 'carrot cake']                   # 不变
    ['pizza', 'falafel', 'carrot cake', 'fish']
    

    练习

    # 使用切片打印列表前三个元素
    my_foods = ['pizza', 'falafel', 'carrot cake', 'fish']
    print('The first three items in the list are:')
    print(my_foods[:3])
    
    # 使用切片打印列表中的三个元素
    print('three items from the middle of the list are:')
    print(my_foods[1:4])
    
    # 复制列表,并把复制的列表存储到一个新变量new_nums中,再给每个列表新添加一个元素,并使用for循环打印列表,看是否有什么不同
    nums = [1, 2, 3, 4, 5, 6]
    new_nums = nums[:]
    
    nums.append(7)
    new_nums.append(8)
    
    
    a = []
    for num in nums:
        a.append(num)
    print('My favorite numbers was: ', a)
    
    b = []
    for new_num in new_nums:
        b.append(new_num)
    print('My new favorite numbers was: ', b)
    
    My favorite numbers was:  [1, 2, 3, 4, 5, 6, 7]
    My new favorite numbers was:  [1, 2, 3, 4, 5, 6, 8]
    

    相关文章

      网友评论

        本文标题:十三、操作列表

        本文链接:https://www.haomeiwen.com/subject/hcvyvxtx.html