if __name__ == '__main__':
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_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)
friend_foods = my_foods[:]
和
friend_foods = my_foods
区别:
这段代码演示了在Python中如何通过不同方式复制列表,并展示了这些方式的差异。我将分两部分解释这段代码。
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
这里,friend_foods
是通过对 my_foods
列表进行切片操作来创建的一个新列表。这意味着 friend_foods
和 my_foods
是两个独立的列表。
my_foods.append('cannoli')
friend_foods.append('ice cream')
向 my_foods
添加 'cannoli'
,向 friend_foods
添加 'ice cream'
。这些添加只影响各自的列表。
当打印这两个列表时,输出将会是:
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
这里,friend_foods
被直接赋值为 my_foods
。这意味着两个变量指向同一个列表。
my_foods.append('cannoli')
friend_foods.append('ice cream')
无论是向 my_foods
添加元素还是向 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']
这两个变量实际上指向同一个列表,所以任何对一个变量的修改都会反映在另一个变量上。
这段代码演示了列表的两种复制方式:切片操作创建一个新的列表副本,而直接赋值则使两个变量指向同一个列表。