[英]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.