大多数pythonic方式重新排序重复列表

时间:2014-07-25 18:15:19

标签: python list

重新排序格式列表的最pythonic方法是什么:

l = ['A1', 'A2', 'A3', 'A4', 
     'C1', 'C2', 'C3', 'C4', 
     'G1', 'G2', 'G3', 'G4', 
     'T1', 'T2', 'T3', 'T4']

致:

l = ['A1', 'C1', 'G1', 'T1', 
     'A2', 'C2', 'G2', 'T2', 
     'A3', 'C3', 'G3', 'T3', 
     'A4', 'C4', 'G4', 'T4']

我提出的最简单的解决方案是l = l[::4] + l[1::4] + l[2::4] + l[3::4],但它似乎并不是最干净的方式。

3 个答案:

答案 0 :(得分:1)

Python的排序很稳定。所以你可以根据第二个字符对它进行排序,比如这个

print sorted(l, key=lambda item: item[1])

或就地排序,

l.sort(key=lambda item: item[1])

正如评论中“未定义不是函数”所指出的,如果数字部分的数字超过1位,则可以

print sorted(l, key=lambda item: int(item[1:]))

答案 1 :(得分:1)

您可以按每个字符串中的第二个字符对列表进行排序。 Python排序是稳定的,因此具有相同第二个字符的元素将保持相同的顺序。这个代码只是:

l = sorted(l, key=lambda e: e[1])

答案 2 :(得分:1)

以下将生成第二个列表,无论初始排序如何。

sorted(l, key=lambda item:item[::-1])