我找到了其他答案,但我不认为他们在做我想要的事情。我也无法理解所提供的答案,因此我不知道如何实现它们。由于他们都是别人的老答案,所以我认为他们不会回答我的问题。我之前尝试过,但没人回答。
长话短说,我早些搞砸了,一开始应该创建一个组合列表,但我没有。而且我不会重新运行其他代码,因为没有意义。当然,不用说,这显然不是我的真实数据集,而只是我想要做的事情的较小图片。
我有两个较小的列表,并且创建了一个较大的组合列表。由于循环的工作方式,我将在组合列表和较小的列表之间重复。我想从较大的列表中删除重复项。
编辑:我的素食清单上只有蔬菜。我的水果清单上只有水果。我的组合列表兼有。我的输出是输入列表中元素的组合。在我的组合列表中,我想要的只是水果和蔬菜的组合。我不想要仅水果的组合,也不想只蔬菜在组合列表中的组合。
使用下面的示例:我的combo_output中不希望从fruit_output和veggie_output中获取任何内容。
fruit_input = ["Apple", "Banana" "Pear", "Peach", "Grape"]
fruit_output = sum([list(map(list, combinations(fruit_input, i))) for i in range(len(fruit_input) + 1)], [])
veggies_input = ["Lettuce", "Cabbage", "Califlour", "Broccoli", "String_Beans", "Celery"]
veggies_output = sum([list(map(list, combinations(veggies_input, i))) for i in range(len(veggies_input) + 1)], [])
combo_input = ["Apple", "Banana" "Pear", "Peach", "Grape",
"Lettuce", "Cabbage", "Califlour", "Broccoli", "String_Beans", "Celery"]
combo_output = sum([list(map(list, combinations(combo_input, i))) for i in range(len(combo_input) + 1)], [])
基本上,如果[“ Apple”,“ Banana”,“ Pear”]在fruit_output中,则不应在组合输出中。我想要的只是组合,是蔬菜和水果。
编辑: 在veggie_out中,您将看到以下内容:
['Lettuce', 'Cabbage', 'Califlour'],
['Lettuce', 'Cabbage', 'Broccoli'],
['Lettuce', 'Cabbage', 'String_Beans'],
在fruit_out中,您会看到类似以下内容:
['Apple', 'BananaPear', 'Grape'],
['Apple', 'Peach', 'Grape'],
['BananaPear', 'Peach', 'Grape'],
['Apple', 'BananaPear', 'Peach', 'Grape']]
在组合中,您将看到所有这些内容:
['Lettuce', 'Cabbage', 'Califlour'],
['Lettuce', 'Cabbage', 'Broccoli'],
['Lettuce', 'Cabbage', 'String_Beans'],
['Apple', 'BananaPear', 'Grape'],
['Apple', 'Peach', 'Grape'],
['BananaPear', 'Peach', 'Grape'],
['Apple', 'BananaPear', 'Peach', 'Grape'],
['Apple', 'Peach', 'Grape', 'Cabbage', 'Califlour', 'Broccoli', 'Celery'],
['Apple', 'Peach', 'Grape', 'Cabbage', 'Califlour', 'String_Beans', 'Celery'],
['Apple', 'Peach', 'Grape', 'Cabbage', 'Broccoli', 'String_Beans', 'Celery'],
这就是我想发生的事情:
['Apple', 'Peach', 'Grape', 'Cabbage', 'Califlour', 'Broccoli', 'Celery'],
['Apple', 'Peach', 'Grape', 'Cabbage', 'Califlour', 'String_Beans', 'Celery'],
['Apple', 'Peach', 'Grape', 'Cabbage', 'Broccoli', 'String_Beans', 'Celery'],
组合正在重复在水果和蔬菜输出中分别执行的操作,而我在那里没有输出。我只想要水果和蔬菜的组合。
答案 0 :(得分:0)
colors = ("blue", "red", "green"), ("silver", "purple", "green"), ("silver", "purple", "green")
numbers = ("one", "two", "three"), ("one", "two", "three"), ("one", "two", "three")
# unique set, same set, unique set, same set
combo = ("blue", "red", "yellow"), ("silver", "purple", "green"), ("one", "two", "ten"), ("one", "two", "three")
# so we expect to see 5 unique total sets
color_numbers = colors + numbers #here we are adding the sets together
unique = set(color_numbers).union(combo) #using set to get only unique values and union to retreive the same values between lists
print(unique)
输出
{('one', 'two', 'three'), ('silver', 'purple', 'green'), ('blue', 'red', 'yellow'), ('blue', 'red', 'green'), ('one', 'two', 'ten')}
我相信您想要使用某种过滤器方法进行设置,如此处https://www.programiz.com/python-programming/methods/set/union