将计数器/索引添加到Python中的列表列表中

时间:2016-10-05 04:10:15

标签: python list

我有一个字符串列表列表:

listBefore = [['4', '5', '1', '1'],
              ['4', '6', '1', '1'],
              ['4', '7', '8', '1'],
              ['1', '2', '1', '1'],
              ['2', '3', '1', '1'],
              ['7', '8', '1', '1'],
              ['7', '9', '1', '1'],
              ['2', '4', '3', '1']]

我想在每个列表的中间添加一个计数器/索引,以便列表如下:

listAfter = [['4', '5', '1', '1', '1'],
             ['4', '6', '2', '1', '1'],
             ['4', '7', '3', '8', '1'],
             ['1', '2', '4', '1', '1'],
             ['2', '3', '5', '1', '1'],
             ['7', '8', '6', '1', '1'],
             ['7', '9', '7', '1', '1'],
             ['2', '4', '8', '3', '1']]

最简单的方法是什么?我可以循环遍历列表并添加索引,但是有更简洁的方法吗?

干杯, 凯特

编辑: 我写的代码对我有用:

item = 1
for list in listBefore:
    list.insert(2,str(item))
    item = item + 1
print listBefore

我想知道是否有其他方法可以更有效率地或一步到位。

4 个答案:

答案 0 :(得分:2)

使用enumerate()迭代父列表以获取计数器(在下面的示例中用作i)以及list元素。在子列表中,使用i方法将list.insert(index, value)插入子列表的中间位置。 注意:计数器i的值将为int类型,因此您必须明确键入将其转换为str str(i)之前的for i, sub_list in enumerate(my_list, 1): # Here my_list is the list mentioned in question as 'listBefore' sub_list.insert(len(sub_list)/2, str(i)) # Value of 'my_list' # [['4', '5', '1', '1', '1'], # ['4', '6', '2', '1', '1'], # ['4', '7', '3', '8', '1'], # ['1', '2', '4', '1', '1'], # ['2', '3', '5', '1', '1'], # ['7', '8', '6', '1', '1'], # ['7', '9', '7', '1', '1'], # ['2', '4', '8', '3', '1']] 插入。以下是示例代码:

Intent intent=new Intent(A.this,B.class);
intent.putStringArrayListExtra("LIST","your array list");

答案 1 :(得分:1)

您可以使用列表推导执行此操作

No command 'peer' found, did you mean:

答案 2 :(得分:0)

您应该了解str_list,它允许您使用两个迭代器迭代列表 - 一个() holds the current item in the list, and the other (在这种情况下for i,str_list in enumerate(listBefore): listBefore[i] = str_list[:len(str_list)//2] + [str(i+1)] + str_list[len(str_list)//2:] i`)保留它的索引清单。

10-06 12:01:51.055 21591-21627/com.jpfalmazan.ninjaassault E/AndroidRuntime: FATAL EXCEPTION: GLThread 2891
                                                                             java.lang.NullPointerException
                                                                                 at com.jpfalmazan.ninjaassault.GameScreens.MenuScreen.<init>(MenuScreen.java:23)
                                                                                 at com.jpfalmazan.ninjaassault.NinjaAssault.create(NinjaAssault.java:19)
                                                                                 at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:275)
                                                                                 at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1505)
                                                                                 at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)

答案 3 :(得分:0)

>>> data = [['4', '5', '1', '1'],
            ['4', '6', '1', '1'],
            ['4', '7', '8', '1'],
            ['1', '2', '1', '1'],
            ['2', '3', '1', '1'],
            ['7', '8', '1', '1'],
            ['7', '9', '1', '1'],
            ['2', '4', '3', '1']]
>>> print [row[:len(row)//2] + [str(i)] + row[len(row)//2:]
           for i, row in enumerate(data, start=1)]
[['4', '5', '1', '1', '1'],
 ['4', '6', '2', '1', '1'],
 ['4', '7', '3', '8', '1'],
 ['1', '2', '4', '1', '1'],
 ['2', '3', '5', '1', '1'],
 ['7', '8', '6', '1', '1'],
 ['7', '9', '7', '1', '1'],
 ['2', '4', '8', '3', '1']]