例如,我有一个list = ['a', 'b', 'c']
。
我想要的是列表indexed(list) == [(1, 'a'), (2, 'b'), (3, 'c)]
。
是否有内置的或模块的?
答案 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)]