3.操作列表--《Python编程:从入门到实践》

3.1 遍历列表

magicians = ['alice', 'david', 'carolina']
   for magician in magicians:    # 临时变量 magician
    print(magician)

  for 循环过程:定义了一个 for 循环,让 Python 从列表 magicians 中取出一个名字,并将其存储在变量 magician 中。最后,我们让 Python 打印前面存储到变量 magician 中的名字。

  注意for 循环用于接收列表的临时变量的作用域并不是 for 循环内部,而是超出 for 循环的作用域,这点从 for 循环结束后依然能使用  magician 可以看出。

  因此要注意 for 循环的临时变量的名称尽量不要与外部成员名称重复,否则很有可能污染外部环境。

   cars = ['bmw', 'audi', 'toyota', 'subaru']
   car_len = len(cars)
   for car in cars:
    magicians = ['alice', 'david', 'carolina']
    for magician in magicians:
     print(magician)
   # 即使 magician 定义在两个for循环的最内层,作用域在外侧也可以接收到。
   print("I can't wait to see your next trick, " + magician.title() + ".\n")

 


 

3.2 创建数值列表 

3.2.1 使用函数 range() 创建一组数

for value in range(1,5,2):     # 从1开始数,每次+2,直至大于等于5
 print(value)                # 1 3 

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

(1)使用 List()  将 range() 的输出变为一个数字列表。

numbers = list(range(1,6)) 
print(numbers)        # [1, 2, 3, 4, 5]

(2)使用 append 与 for 循环。

   # 创建一个列表,包含10个整数(即1~10)的平方
   squares = []
   for value in range(1, 11):
       squares.append(value ** 2)
   print(squares)        # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

 


 

3.3 使用列表的一部分 -- 切片

3.3.1 切片

  要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range()一样,Python
在到达你指定的第二个索引前面的元素后停止。我觉得这里理解成前闭后开原则较好,前闭指的是起始索引对应的元素是包括的,而结束索引对应的元素不包括。

players = ['charles', 'martina', 'michael', 'florence', 'eli']    # 提取第3和4个元素,即切片的索引是2~4
   print(players[2:4])    # [''michael', 'florence']

   

  如果你没有指定第一个索引,Python将自动从列表开头开始。

players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
print(players[:4])        # ['charles', 'martina', 'michael', 'florence']

   

  要让切片终止于列表末尾,也可使用类似的语法。例如,如果要提取从第3个元素到列表末
尾的所有元素,可将起始索引指定为2,并省略终止索引:

players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
print(players[2:])    # ['michael', 'florence', 'eli']

  

  我们也可以使用负数。例如,如果你要输出名单上的最后三名队员,可使用切片players[-3:]:

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[-3:])  # ['michael', 'florence', 'eli']

 

3.3.2 遍历切片

  如果要遍历列表的部分元素,可在for循环中使用切片。在下面的示例中,我们遍历前三名
队员,并打印他们的名字。

   players = ['charles', 'martina', 'michael', 'florence', 'eli']
   print("Here are the first three players on my team:")
   for player in players[:3]:
       print(player.title())
   # Here are the first three players on my team:
   # Charles
   # Martina
   # Michael

 

 3.2.3 复制列表

  要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。

  千万不能简单的=赋值,而不适用切片,否则会造成类似浅拷贝的问题。

   my_foods = ['pizza', 'falafel', 'carrot cake']
   friend_foods = my_foods[:]       # !!!通过切片复制列表
   friend2_foods = my_foods         # 不使用切片复制列表(❌)相当于浅拷贝,修改目标列表也会修改源列表

   friend_foods.append('ice-cream') 
   friend2_foods.append('cannoli')

   print(my_foods)          # ['pizza', 'falafel', 'carrot cake', 'cannoli']
   print(friend_foods)      # ['pizza', 'falafel', 'carrot cake', 'ice-cream']
   print(friend2_foods)     # ['pizza', 'falafel', 'carrot cake', 'cannoli']

 


 

3.4 元组

  元组是一系列不可修改的元素,这与列表的可修改元素是对应的。

   dimensions = (200, 50)
   print(dimensions[0])
   
   for dimension in dimensions:
       print(dimension)

3.4.1 修改元组变量

  虽然不能修改元组的元素,但可以给存储元组的变量赋值。即重新定义整个元组。

dimensions = (200, 50)
for dimension in dimensions:
    print(dimension)     # 200 50

dimensions = (400, 100)      # 重新定义元组 dimensions
for dimension in dimensions:
    print(dimension)     # 400 100

   

 

posted @ 2022-07-20 18:12  人类观察者  阅读(23)  评论(0编辑  收藏  举报