簡體   English   中英

從列表中創建唯一項目的子列表

[英]Create sub-lists of the unique items from a list

所以我有一個帶有模式的列表。 例如。 同類物品按順序排列。

mylist = [itemtype1, itemtype1, itemtype1, itemtype2, itemtype2, itemtype2, itemtype3, itemtype3, itemtype3]

myresultlist = [[itemtype1, itemtype2, itemtype3], [itemtype1, itemtype2, itemtype3], [itemtype1, itemtype2, itemtype3]]

實際上,我想創建獨特項目的子列表。

[itemtype1, itemtype2, itemtype3], [itemtype1, itemtype2, itemtype3], [itemtype1, itemtype2, itemtype3]

是否可以從“mylist”創建“myresultlist”。

編輯:另一個例子。

mylist = ['jimmy', 'andrew', 'kappy', 'US', 'Spain', 'UK', 'Baseball', 'Football', 'Cricket']

myresultlist = [['jimmy', 'US', 'Baseball'], ['andrew', 'Spain', 'Football'], ['kappy', 'UK', 'Cricket']

一個帶有第三個參數和zip()的小range()可以讓你到達那里,我想......

# How many sub-sets to expect
subsets = 3

# your raw data
data = ['jimmy', 'andrew', 'kappy', 'US', 'Spain', 'UK', 'Baseball', 'Football', 'Cricket']

# reshape your raw data into the given number of "subsets"
data_subsets = [
    data[i:i+len(data)//subsets]
    for i in range(0, len(data), subsets)
]

# print your results
print([list(s) for s in zip(*data_subsets)])

這應該給你:

[
    ['jimmy', 'US', 'Baseball'],
    ['andrew', 'Spain', 'Football'],
    ['kappy', 'UK', 'Cricket']
]

這將起作用:

mylist = [1, 1, 1, 2, 2, 2, 3, 3, 3]

[list(set(mylist))]*int((len(mylist)/len(set(mylist))))

輸出:

[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

基本上使用 set 進行重復數據刪除,然后轉換回列表。 重復 n 次,其中 n = 列表長度 / 設置長度

[編輯] 在問題的新編輯中看到了這個例子。 上述解決方案不適用於該場景。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM