如何解决在python相同长度的循环中组合两个列表
我的大部分脚本编写经验来自 bash 和 perl。这个问题对从这些语言过渡到 python 的人很有用。 stackoverflow 建议列中有关在 python 中展平两个列表的其他问题太“pythonic”了。
这是从 headfirst python 书中的第 14 页开始的。他们希望您以循环方式组合两个列表。此脚本导致:
['The Holy Grail',1975,'The Life of Brian',1979]
我不知道我是否在从列表中弹出值或将其附加到新列表时遇到问题。
movies = ['The Holy Grail','The Meaning of Life']
years = [1975,1979,1983]
combi = []
for i in movies:
popmov = movies.pop(0)
popyea = years.pop(0)
combi.append(popmov)
combi.append(popyea)
print(combi)
解决方法
在迭代列表时,您永远不会从列表中删除元素(此处为 movies
)
这里使用索引
for i in range(len(movies)):
combi.append(movies[i])
combi.append(years[i])
或者更好的方法 zip
配对给定的列表:
for movie,year in zip(movies,years):
combi.append(movie)
combi.append(year)
# or shorter
for pair in zip(movies,years):
combi.extend(pair)
,
您不应在遍历列表的同时删除项目。
这有效:
movies = ['The Holy Grail','The Life of Brian','The Meaning of Life']
years = [1975,1979,1983]
combi = []
for _ in range(len(movies)): # this runs loop the number of times the length of first list
popmov = movies.pop(0)
popyea = years.pop(0)
combi.append(popmov)
combi.append(popyea)
print(combi)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。