繁体   English   中英

如何从较大的元素列表列表中删除较小的元素列表列表

[英]how to remove a smaller list of element lists from a larger list of element lists

我找到了其他答案,但我认为他们并没有完全按照我的意愿行事。 我也无法理解所提供的答案,所以我不知道如何实施它们。 由于他们都是其他人的旧答案,我认为他们不会回答我的问题。 我以前试过,没人回答。

长话短说,我早些时候搞砸了,应该创建一个组合列表,但我没有。 而且我不会重新运行我的其他代码,因为没有意义。 当然,不用说,它应该是 go,这显然不是我的真实数据集,而这只是我正在尝试做的事情的一个小图。

我有两个较小的列表,我创建了一个较大的组合列表。 由于循环的工作方式,我将在组合列表和较小的列表之间重复。 我想从更大的列表中删除重复项。

编辑:我的蔬菜清单只有蔬菜。 我的水果清单只有水果。 我的组合列表都有。 我的输出是输入列表中元素的组合。 在我的组合列表中,我想要的只是水果和蔬菜的组合。 在我的组合列表中,我不想要只有水果的组合,也不想要只有蔬菜的组合。

使用下面的例子:我不想要我的 fruit_output 和我的 combo_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 中,它不应该在组合 output 中。我想要的只是蔬菜和水果的组合。

编辑:在 veggie_out put 你会看到这样的东西:

['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'],

Combo 正在重复在水果和蔬菜输出中单独完成的操作,我没有将它们的输出放在那里。 我只想要水果和蔬菜的组合。

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)

Output

{('one', 'two', 'three'), ('silver', 'purple', 'green'), ('blue', 'red', 'yellow'), ('blue', 'red', 'green'), ('one', 'two', 'ten')}

我相信你想要设置某种过滤方法,如此处所示https://www.programiz.com/python-programming/methods/set/union

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM