簡體   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