重新排序格式列表的最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]
,但它似乎并不是最干净的方式。
答案 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])