python – zip(跳过一个列表中的元素但不跳过其他列表)

python – zip(跳过一个列表中的元素但不跳过其他列表),第1张

概述我有2个列表,a和b.让我们说len(a)= len(b)1.我想同时迭代两个列表,条件.因为,a有额外的垃圾值,它应该从a中跳过该值,但它不应该跳过b中的值.然后,当下一次迭代发生时,a应从下一个元素开始,b前面是相同的初始元素. 示例中的解释. a = [1,2,3,4,5,6,19,20]b = [7,8,9,10,11,17,18]for x,y in zip(a,b): i 我有2个列表,a和b.让我们说len(a)= len(b)1.我想同时迭代两个列表,条件.因为,a有额外的垃圾值,它应该从a中跳过该值,但它不应该跳过b中的值.然后,当下一次迭代发生时,a应从下一个元素开始,b前面是相同的初始元素.

示例中的解释.

a = [1,2,3,4,5,6,19,20]b = [7,8,9,10,11,17,18]for x,y in zip(a,b):    if x == 5: # some condition        #in this case y is 11        continue # skip the value 5 from a but dont skip 11 from b.    print x,y

预期的产出将是

1 72 83 94 106 11 # 5 skipped because of some condition,but 11 remains intact19 1720 18

我该怎么做?

或者如果有任何其他解决方案,同时迭代,请告诉我.

解决方法 如果在循环之前不知道要跳过哪个值,则可以使用迭代器,然后调用next来丢弃值:

import itertoolsa = [1,18]it_a = iter(a)it_b = iter(b)for x,y in itertools.izip(it_a,it_b):    if x == 5:        x = next(it_a)    print x,y

这使:

1 72 83 94 106 1119 1720 18

但要小心.如果你调用next(it_a),并且你已经从迭代器中读取了所有的值,那么你将得到一个stopiteration异常,你可能想以某种方式处理它.另外,请注意,如果你以某种方式跳过a的两个元素,那么a将在b之前耗尽元素,并且zip将在生成b的最后一个元素之前静默停止.

或者,如果您在进入for循环之前确实知道要排除的内容,那么您可以基本上完​​成@wnnmaw在下面建议的内容,但使用生成器理解而不是列表理解.这将懒惰地排除:

a = [1,18]it_a = (x for x in a if x not in {5,42,101})for x,y in zip(it_a,b):    print x,y
总结

以上是内存溢出为你收集整理的python – zip(跳过一个列表中的元素但不跳过其他列表)全部内容,希望文章能够帮你解决python – zip(跳过一个列表中的元素但不跳过其他列表)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1193257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存