我尝试用列表的索引值替换列表中的项,我可以用for循环来完成,但我想知道是否有更快的方法来完成。使得以下列表
example = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
变为:
solution = [[0, 0, 0], [1, 1, 1], [2, 2, 2]]
ycl3bljg1#
您使用for循环的方式应该可以工作,但是如果您希望在一个简短的版本中使用另一种方式,那么您可以使用list comprehension和enumerate这样做,
for
example = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] result = [[index] * len(value) for index, value in enumerate(example)] print(result)
pbwdgjma2#
列表解析通常比循环快下面是一个使用列表解析的解决方案第一个
wbrvyc0a3#
solution = [[i]*len(x) for i, x in enumerate(example)]
jqjz2hbq4#
以下是使用map函数的解决方案:
map
res = list(map(lambda i : [i] * len(example[i]), range(len(example)) )) print(res)
它比解析方法更冗长,但来自其他语言,我更喜欢它--我发现map更显式,更容易理解,因为它是由高阶函数的公共组件构建而成的,而不是有自己的语法。
4条答案
按热度按时间ycl3bljg1#
您使用
for
循环的方式应该可以工作,但是如果您希望在一个简短的版本中使用另一种方式,那么您可以使用list comprehension和enumerate这样做,pbwdgjma2#
列表解析通常比循环快
下面是一个使用列表解析的解决方案
第一个
wbrvyc0a3#
jqjz2hbq4#
以下是使用
map
函数的解决方案:它比解析方法更冗长,但来自其他语言,我更喜欢它--我发现
map
更显式,更容易理解,因为它是由高阶函数的公共组件构建而成的,而不是有自己的语法。