如何同时枚举两个相等长度的列表? 我确信必须有更多的pythonic方法来执行以下操作:
for index, value1 in enumerate(data1):
print index, value1 + data2[index]
我想在for循环中使用index和data1 [index]和data2 [index]。
答案 0 :(得分:80)
使用zip
:
for index, (value1, value2) in enumerate(zip(data1, data2)):
print index, value1 + value2
请注意,zip
仅运行两个列表中较短的一个(对于等长列表而言不是问题),但是,如果要遍历整个列表,则在长度列表不相等的情况下使用{{3} }}
答案 1 :(得分:10)
for i, (x, y) in enumerate(zip(data1, data2)):
在Python 2.x中,您可能希望使用itertools.izip
而不是zip
,尤其是很长的名单。
答案 2 :(得分:1)
recyclerViewCriteresOne.addOnItemTouchListener(
new RecyclerItemClickListener(context, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Drawable drawable = criteresAdapter.getImageView(position);
drawable.mutate();
if (!criteresAdapter.getCritere(position).getIsActive()) {
criteresActifs[0]++;
setLancerRechercheTextViewVisibility(v);
drawable.setColorFilter(v.getResources().getColor(R.color.hypred_gris), PorterDuff.Mode.MULTIPLY);
criteresAdapter.getCritere(position).setIsActive(true);
criteresAdapter.notifyDataSetChanged();
} else {
criteresActifs[0]--;
setLancerRechercheTextViewVisibility(v);
drawable.clearColorFilter();
criteresAdapter.getCritere(position).setIsActive(false);
criteresAdapter.notifyDataSetChanged();
}
}
}));
来源:http://www.saltycrane.com/blog/2008/04/how-to-use-pythons-enumerate-and-zip-to/#c2603
答案 3 :(得分:1)
由于已经提到长度相等,
for l in range(0, len(a)):
print a[l], b[l]
答案 4 :(得分:0)
假设您要使用zip
:
>>> for x in zip([1,2], [3,4]):
... print x
...
(1, 3)
(2, 4)
答案 5 :(得分:0)
虽然你不太清楚你想要什么,
>>> data1 = [3,4,5,7]
>>> data2 = [4,6,8,9]
>>> for index, value in enumerate(zip(data1, data2)):
print index, value[0]+value[1]
0 7
1 10
2 13
3 16