Python 2.7 从python列表中删除循环子字符串

Python 2.7 从python列表中删除循环子字符串,python-2.7,Python 2.7,我有一个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,我们会看到列表中有该项的重复项,但是它不会立即被注意到。这是因为它是循环的

我有一个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)

以下是我编写的解决方案:如果有人有更好的算法,我会接受这个答案:

mylist = list()
for item in copy_of_cur:
    linear_peptide = item+item    
    mylist  = filter(lambda x: len(x) == 3 , subpeptides_linear(linear_peptide))
    for subitem in mylist:
        if subitem != item:
            if subitem in cur_list:
                cur_list.remove(subitem)
输出:

['IKW', 'IQW', 'KLW', 'LQW']
['IKW', 'IQW', 'KLW', 'LQW']