示例中的解释.
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(跳过一个列表中的元素但不跳过其他列表)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)