提问人:Dude Rar 提问时间:8/9/2023 最后编辑:BarmarDude Rar 更新时间:8/9/2023 访问量:52
如何更改列表的第一个元素?
How can I change the first element of a list?
问:
我有这个元素列表:
[[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)))
任何帮助都非常感谢。
答:
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)
评论