同时枚举两个python列表?

时间:2013-05-01 21:29:59

标签: python list

如何同时枚举两个相等长度的列表? 我确信必须有更多的pythonic方法来执行以下操作:

for index, value1 in enumerate(data1):
    print index, value1 + data2[index]

我想在for循环中使用index和data1 [index]和data2 [index]。

6 个答案:

答案 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