python 如何将列表项的所有列表替换为该列表的索引值

pieyvz9o  于 2022-11-28  发布在  Python
关注(0)|答案(4)|浏览(143)

我尝试用列表的索引值替换列表中的项,我可以用for循环来完成,但我想知道是否有更快的方法来完成。
使得以下列表

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

变为:

solution = [[0, 0, 0], [1, 1, 1], [2, 2, 2]]
ycl3bljg

ycl3bljg1#

您使用for循环的方式应该可以工作,但是如果您希望在一个简短的版本中使用另一种方式,那么您可以使用list comprehensionenumerate这样做,

example = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
result = [[index] * len(value) for index, value in enumerate(example)]
print(result)
pbwdgjma

pbwdgjma2#

列表解析通常比循环快
下面是一个使用列表解析的解决方案
第一个

wbrvyc0a

wbrvyc0a3#

solution = [[i]*len(x) for i, x in enumerate(example)]
jqjz2hbq

jqjz2hbq4#

以下是使用map函数的解决方案:

res = list(map(lambda i : [i] * len(example[i]),
            range(len(example))
        ))
print(res)

它比解析方法更冗长,但来自其他语言,我更喜欢它--我发现map更显式,更容易理解,因为它是由高阶函数的公共组件构建而成的,而不是有自己的语法。

相关问题