python - python中的append方法在嵌套for循环中没有按预期工作
问题描述
我想使用嵌套的 for 循环将一个列表附加到另一个列表中,但代码没有按预期工作
def apend():
ls = []
numbers = [0,0]
for num1 in range(3):
for num2 in range(2):
numbers[0] = num1
numbers[1] = num2
ls.append(numbers)
print(ls)
apend()
我希望输出是:[[0,0],[0,1],[0,2],1,0],[1,1],[1,2]]
但我得到这个输出:[[1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2]]
解决方案
如果您在http://pythontutor.com/上运行您的代码,那么您会看到
列表中的所有元素都ls
引用同一个列表numbers
,这会产生问题。
您必须numbers = [0,0]
在for
-loop内创建新列表
for num1 in range(3):
for num2 in range(2):
numbers = [0,0]
numbers[0] = num1
numbers[1] = num2
ls.append(numbers)
或者干脆不做numbers
for num1 in range(3):
for num2 in range(2):
ls.append([num1, num2])
推荐阅读
- javascript - 降低水平滚动中 div 的不透明度是否部分可见
- botframework - Bot Framework V4 MS 团队渠道和 GDPR
- linux - 如何在使用 find 命令时仅删除文件名
- android - 无法将 .aab/apk 文件上传到 Play 商店
- google-sheets - Google Sheets - 如何根据另一个单元格中的匹配值连接范围?
- ios - 从应用内的 Firebase In-App-Messaging 打开 url
- javascript - Jquery:仅查找一个最近的匹配元素
- android - 从服务发送的通知中打开我的 kivy 应用程序
- arrays - 遍历数组(奇怪的维度)
- swagger - Ocelot 招摇重定向问题