python编程:从入门到实践 (第一版) 第四章学习笔记

第4章:操作列表

列表的遍历

magicians.py

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!")

创建数值列表

Python函数range() 让你能够轻松地生成一系列的数字

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

使用range() 创建数字列表

numbers = list(range(1, 6))
print(numbers)

打印1-10内的偶数

even_numbers = list(range(2,11,2))
print(even_numbers)

函数range() 从2开始数,然后不断地加2,直到达到或超过终值(11)
squares.py

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

为让这些代码更简洁,可不使用临时变量square ,而直接将每个计算得到的值附加到列表末尾:

squares = []
for value in range(1,11):
	squares.append(value ** 2)
print(squares)
>>> digits = [12, 30, 20, 8, 7,18]
>>> max(digits)
30
>>> min(digits)
7
>>> sum(digits)
95
列表解析
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 语句末尾没有冒号。

使用列表的一部分

切片

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

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

输出:

['charles', 'martina', 'michael']

没有指定第一个索引,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']

负数索引返回离列表末尾相应距离的元素。比如取最后3位

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

输出:

['michael', 'florence', 'eli']
遍历切片
players = ['charles', 'martina', 'michael', 'florence', 'eli']
for player in players[: 3]:
	print(player)

输出:

charles
martina
michael
复制列表

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

my_foods = ['pizza', 'falafel', 'carrot cake'] 
friend_foods = my_foods[:]
my_foods.append('cannoli') 
friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)

输出:

My favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli']

My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake', 'ice cream']

行不通的做法:

my_foods = ['pizza', 'falafel', 'carrot cake']
#这行不通
friend_foods = my_foods
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)

输出:

My favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']

My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']

元组

元组看起来犹如列表,但使用圆括号而不是方括号来标识

如果有一个大小不应改变的矩形,可将其长度和宽度存储在一个元组中,从而确保它们是不能修改的:

dimensions = (200, 50) 
print(dimensions[0])
print(dimensions[1])

输出:

200
50

注意: 由于试图修改元组的操作是被禁止的

遍历元组的值
dimensions = (200, 50) 
for dimension in dimensions:
	print(dimension)
修改元组变量
dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
	print(dimension)
dimensions = (400, 100) 
print("\nModified dimensions:")
for dimension in dimensions:
	print(dimension)

输出:

Original dimensions:
200
50

Modified dimensions:
400
100

习题

4-1
pizzas = ['海鲜披萨', '肉食主义披萨', '榴莲披萨']
for pizza in pizzas:
	print("我喜欢" + pizza +"!")
print("我非常喜欢披萨!")
4-2
animals = ['cat', 'dog', 'mole']
for animal in animals:
	print("A " + animal + " would make a great pet.")
print("Any oftheseanimals would makea great pet.")
4-3
for number in range(1, 21):
	print(number)
4-4
for number in range(1, 1000001):
	print(number)
4-5
numbers = list(range(1, 1000001))
print(min(numbers))
print(max(numbers))
print(sum(numbers))
4-6
for odd_number in range(1, 21, 2):
	print(odd_number)
4-7
for three_number in range(3, 31, 3):
	print(three_number)
4-8
cubes = []
for value in range(1, 11):
	cubes.append(value ** 3)
for cube in cubes:
	print(cube)
4-9
cubes = [value ** 3 for value in range(1, 11)]
for cube in cubes:
	print(cube)
4-10
my_foods = ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
print("The first threeitems in the list are:")
print(my_foods[:3])
print("--------------------------------------------")
print("Three items fromthe middle of the list are:")
print(my_foods[1: 4])
print("--------------------------------------------")
print("The last three items in the list are:")
print(my_foods[-3:])
4-11
my_pizzas = ['海鲜披萨', '肉食主义披萨', '榴莲披萨']
friend_pizzas = my_pizzas[:]
my_pizzas.append('水果披萨')
friend_pizzas.append('魔鬼披萨')
print('我最喜欢的披萨:')
for my_pizza in my_pizzas:
	print(my_pizza)
print("-------------------------------")
print('我朋友最喜欢的披萨:')
for friend_pizza in friend_pizzas:
	print(friend_pizza)
4-12
#可以用4-11的
4-13
zizhu_foods = ('面条', '牛奶', '蛋糕', '冰淇淋', '蟹肉棒')
for zizhu_food in zizhu_foods:
	print(zizhu_food)
# test
# zizhu_foods(0) = '水果'
print("-----------------------------------")
zizhu_foods = ('水果', '牛奶', '蛋糕', '冰淇淋', '蟹肉棒')
for zizhu_food in zizhu_foods:
	print(zizhu_food)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值