gpt4 book ai didi

python - 在python中生成不同维度的元组

转载 作者:太空宇宙 更新时间:2023-11-04 07:27:53 26 4
gpt4 key购买 nike

我最近开始学习 python,但我被困在某个地方看到的这个问题中。

输入将是一个数字n,后跟n 个数字的列表。我必须生成不同的组合元组,每次消除一个元素:

输入:

4
1 2 3 4

预期输出:

[(1,),(2,3,4)]
[(1,2),(3,4)]
[(1,2,3),(4,)]
[(1,2,3,4)]

正如您所看到的,元组中的一个元素在每个序列中都出现了。

这是我尝试过的:

 n=int(input())

my_num=[]
my_list=[]
my_num=input().split(" ")
my_num=list(map(int,my_num))

for i in my_num:
temp_num=list(itertools.combinations(my_num,i))
my_list.append(temp_num)

这是我得到的:

[(1,), (2,), (3,), (4,)]
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]
[(1, 2, 3, 4)]

现在我不得不手动选择元素,这显然是不允许的。我知道我必须对每个列表中的最后一个元素做一些事情,但无法弄清楚。请帮忙!谢谢!

还有如何引用特定元素,例如如果我只需要在上面生成的第一个列表中打印 (2,3,4) 会怎样。如何引用?

最佳答案

您可以在输入列表的长度范围内迭代索引,并相应地在索引处对列表进行切片。预期输出中的最后一个列表不需要切片并且只有一个元组(而不是之前列表中的两个)所以你可以直接 yield 它:

def slices(l):
for i in range(1, len(l)):
yield [tuple(l[:i]), tuple(l[i:])]
yield [tuple(l)]

这样:

list(slices([1, 2, 3, 4]))

返回:

[[(1,), (2, 3, 4)], [(1, 2), (3, 4)], [(1, 2, 3), (4,)], [(1, 2, 3, 4)]]

关于python - 在python中生成不同维度的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54949997/

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