gpt4 book ai didi

python - 复制嵌套列表并用连续数字填充

转载 作者:行者123 更新时间:2023-11-28 20:00:50 26 4
gpt4 key购买 nike

给定这个嵌套列表:

foo = [["apple", "cherry"], ["banana"], ["pear", "raspberry", "pineapple"]]

我想保留结构并用连续的数字替换所有项目。我想要的输出是:

[[0, 1], [2], [3, 4, 5]]

我希望有一个简单的单行代码,但我想出的最短的工作解决方案是:

foo_numbers = []
count = 0

for i, sublist in enumerate(foo):
foo_numbers.append([])
for item in sublist:
foo_numbers[i].append(count)
count += 1

通常这些手动迭代器表明有更 pythonic 的方法来实现同样的事情。如果这是通过列表理解来完成的,我看不出如何为两个循环组成一个“共享计数器”,所以它不会对每个 sublist 从零开始。

最佳答案

您可以使用 itertools.count使用嵌套列表理解:

from itertools import count

foo = [["apple", "cherry"], ["banana"], ["pear", "raspberry", "pineapple"]]

c = count() # 0 start is default, e.g. count(1) will start from 1
res = [[next(c) for _ in lst] for lst in foo]

print(res)
# [[0, 1], [2], [3, 4, 5]]

关于python - 复制嵌套列表并用连续数字填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54328027/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com