如何将索引添加到列表?

时间:2019-07-02 01:18:44

标签: python list indices

例如,我有一个list = ['a', 'b', 'c']
我想要的是列表indexed(list) == [(1, 'a'), (2, 'b'), (3, 'c)]

是否有内置的或模块的?

7 个答案:

答案 0 :(得分:3)

您可以通过执行以下操作来枚举它,

for i,n in enumerate(list):
# where i is the index and n is the value of the list

答案 1 :(得分:3)

您可以使用内置功能enumerate来实现。

In [1]: a = ['a', 'b', 'c']

In [2]: b = [(idx, item) for idx,item in enumerate(a)]

In [3]: b
Out[3]: [(0, 'a'), (1, 'b'), (2, 'c')]

注意:默认索引将以0开头,但是您可以尝试添加start=1进行配置,例如

In [4]: c = [(idx, item) for idx,item in enumerate(a, start=1)]

In [5]: c
Out[5]: [(1, 'a'), (2, 'b'), (3, 'c')]

希望有帮助。

答案 2 :(得分:2)

您可以做类似

的操作
      deleteFolderContents(path) {
        let ref = firebase.storage().ref(path);
        ref.listAll()
          .then(dir => {
            dir.items.forEach(fileRef => {
              this.deleteFile(ref.fullPath, fileRef.name);
            });
            dir.prefixes.forEach(folderRef => {
              this.deleteFolderContents(folderRef.fullPath);
            })
          })
          .catch(error => {
            console.log(error);
          });
      }

我假设您需要从1开始的索引。否则,您可以直接对indexed_list = [(i + 1, elem) for i, elem in enumerate(your_list)] 结果进行列表理解,而无需在索引中添加1。

编辑:根据@pault的建议进行更新,即使用内置参数

enumerate

或者简单地

indexed_list = [indexed for indexed in enumerate(your_list, 1)]

答案 3 :(得分:2)

Python中的索引始于0而不是1。您可以使用zip()模块中的内置count()函数和itertools生成器函数来执行所需的操作。

如果这是您想要的,还必须将zip()的结果显式转换为list(这就是为什么我将变量名更改为my_list以防止它“隐藏”具有相同名称的内置类-总是可以做的一件好事):

from itertools import count

my_list = ['a', 'b', 'c']

indexed_my_list = list(zip(count(), my_list))
print(indexed_my_list)  # -> [(0, 'a'), (1, 'b'), (2, 'c')]

不清楚为什么需要这样做,因为您可以使用内置的enumerate()函数在需要索引时获取索引,如其他答案所示。

答案 4 :(得分:1)

下面的代码是您想要的:

indexed_list = list(enumerate(your_list, 1))

编辑:根据@pault的建议,代码更改如下:

>>>l = ['a', 'b', 'c']
>>>indl = [(i + 1, val) for i, val in enumerate(l)]
>>> indl
[(1, 'a'), (2, 'b'), (3, 'c')]

答案 5 :(得分:1)

您可以使用枚举,它也是它的开始参数:

l = ['a', 'b', 'c']
indexed_list = list(enumerate(l, 1))

对于称为indexed的函数,您可以制作一个

注意! 切勿替换内置关键字! list列表就是其中之一

>>> def indexed(l, start=1):
    ...    return list(enumerate(l, start))
>>> l = ['a', 'b', 'c']
>>> indexed(l)
[(1, 'a'), (2, 'b'), (3, 'c)]

默认值为1的起始值。

答案 6 :(得分:1)

使用列表理解和枚举

[(i,l) for i,l in enumerate(list)]