python – 迭代两个列表并同步它们
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 迭代两个列表并同步它们,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1254字,纯文字阅读大概需要2分钟。
内容图文
![python – 迭代两个列表并同步它们](/upload/InfoBanner/zyjiaocheng/752/1aec3165a20640d2b359f55d0ecbc21a.jpg)
我需要以下列方式迭代两个列表:
伪代码:
j=1
for i=1 to n:
print a[i], b[j]
while b[j+1] <= a[i]:
j++
print a[i], b[j]
例如:
a = [1 3 5 7]
b = [2 4 9]
期望的输出:
1 2
3 2
5 2
5 4
7 4
你怎么干净地在python中做到这一点?
解决方法:
您的伪代码几乎可以在Python中运行.一些工作代码可以满足您的需求:
a = [1, 3, 5, 7]
b = [2, 4, 9]
j = 0
for i in range(len(a)):
print a[i], b[j]
while j<len(b)-1 and b[j+1] <= a[i]:
j += 1
print a[i], b[j]
请注意一些变化,使其在Python中工作:
>声明列表时,项目之间需要逗号.
>列表索引从0开始,因此i和j都应该从那里开始.
> len(a)返回a的长度(在这种情况下为4),迭代i到range(len(a))执行从0到len(a)-1的每个整数的循环,这是所有索引在一个.
> Python不支持该操作,因此我们使用j = 1.
>我们必须避免使用超出b的边界索引,因此我们测试以确保j在递增之前将处于边界内.
通过遍历列表,可以使此代码更加pythonic,如下所示:
a = [1, 3, 5, 7]
b = [2, 4, 9]
j = 0
for element in a:
print element, b[j]
while j<len(b)-1 and b[j+1] <= element:
j += 1
print element, b[j]
通常,您可能不希望只打印列表元素,因此对于更一般的用例,您可以创建一个generator,如:
def sync_lists(a, b)
if b:
j = 0
for element in a:
yield (element, b[j])
while j<len(b)-1 and b[j+1] <= element:
j += 1
yield (element, b[j])
然后你可以像以前一样打印它们
a = [1, 3, 5, 7]
b = [2, 4, 9]
for (e1, e2) in sync_lists(a, b):
print e1, e2
内容总结
以上是互联网集市为您收集整理的python – 迭代两个列表并同步它们全部内容,希望文章能够帮你解决python – 迭代两个列表并同步它们所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。