我有一個Python列表如下所示:去除Python列表循環子
['IKW', 'IQW', 'IWK', 'IWQ', 'KIW', 'KLW', 'KWI', 'KWL', 'LKW', 'LQW', 'LWK', 'LWQ', 'QIW', 'QLW', 'QWI', 'QWL', 'WIK', 'WIQ', 'WKI', 'WKL', 'WLK', 'WLQ', 'WQI', 'WQL']
如果我們挑,說第二個元素IQW
,我們可以看到列表中有此項目但其不引人注意權的重複遠。這是因爲它是循環的。我的意思是以下是相同的。
IQW
,QWI
,WIQ
也可能是倒退,這也是重複的,所以我想它刪除。所以現在重複的名單是
IQW
,QWI
,WIQ
,WQI
,IWQ
(每一個這些的反向),QIW
所以基本上我想IQW
是唯一一個離開。 獎勵積分,如果剩餘在列表中的獎勵積分按字母順序排序。
我做的方法是進行排序按字母順序排列的完整列表:
`IQW`, `QWI`, `WIQ` , `WQI`, `IWQ`, `QIW` ->
`IQW`, `IQW`, `IQW`, `IQW`, `IQW` `IQW`
,然後刪除重複的。 但是,這也消除組合,說我有ABCD
和CDAB
。這些不一樣,因爲結尾只會遇到一次。但我的方法將它們排序到ABCD
和ABCD
並刪除一個。
我的代碼:
print cur_list
sortedlist = list()
for i in range(len(cur_list)):
sortedlist.append(''.join(map(str, sorted(cur_list[i]))))
sortedlist = set(sortedlist)