如何更改列表的第一个元素?

How can I change the first element of a list?

提问人:Dude Rar 提问时间:8/9/2023 最后编辑:BarmarDude Rar 更新时间:8/9/2023 访问量:52

问:

我有这个元素列表:

[[0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [0, 1, 2], [0, 2, 0], [0, 2, 1], [0, 2, 2]]

我想像这样增加它:

[[1, 0, 0], [1, 0, 1], [1, 0, 2], [1, 1, 0], [1, 1, 1].................] then with 2:

[[2, 0, 0], [2, 0, 1], [2, 0, 2], [2, 1, 0], [2, 1, 1].................] and so on until 5.

我不想硬编码,所以我正在尝试 itertools,但我只能像这样达到 2 个:

first2 = list(map(list, itertools.product(list(range(3)), repeat = 3)))

任何帮助都非常感谢。

列表 数组列表 python-itertools

评论

4赞 Barmar 8/9/2023
您的代码与递增每个嵌套列表的第一个元素有什么关系?

答:

0赞 John Gordon 8/9/2023 #1

我不明白你说的“不想硬编码”是什么意思。

你不能做这样的事情吗?

for _ in range(5):
    for item in mylist:
        item[0] += 1
1赞 Barmar 8/9/2023 #2

用于创建第 2 个和第 3 个元素,以及一个外部循环,用于在它们前面加上 0 到 5。itertools.product()

result = []
for i in range(6):
    result.extend([i] + list(x) for x in itertools.product(range(3), repeat = 2))
0赞 Andrej Kesely 8/9/2023 #3

尝试:

lst = [
    [0, 0, 0],
    [0, 0, 1],
    [0, 0, 2],
    [0, 1, 0],
    [0, 1, 1],
    [0, 1, 2],
    [0, 2, 0],
    [0, 2, 1],
    [0, 2, 2],
]

out = []
for i in range(1, 6):
    out.append([[i, *subl[1:]] for subl in lst])

print(out)

指纹:

[
    [
        [1, 0, 0],
        [1, 0, 1],
        [1, 0, 2],
        [1, 1, 0],
        [1, 1, 1],
        [1, 1, 2],
        [1, 2, 0],
        [1, 2, 1],
        [1, 2, 2],
    ],
    [
        [2, 0, 0],
        [2, 0, 1],
        [2, 0, 2],
...

单行:

out = [[[i, *subl[1:]] for subl in lst] for i in range(1, 6)]
print(out)