python 切片操作创建一个新的列表副本,而直接赋值则使两个变量指向同一个列表
2023-12-26 14:43:47
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']
这两个变量实际上指向同一个列表,所以任何对一个变量的修改都会反映在另一个变量上。
总结
这段代码演示了列表的两种复制方式:切片操作创建一个新的列表副本,而直接赋值则使两个变量指向同一个列表。
文章来源:https://blog.csdn.net/sunyuhua_keyboard/article/details/135220256
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!