如何按每行的第一个元素排序?

2024-06-03 00:00:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图按字母顺序对每行的第一个元素进行排序,但很难让它正常工作

[['^', 'G', 'A', 'T', 'T', 'A', 'C', 'A', '!']]
[['G', 'A', 'T', 'T', 'A', 'C', 'A', '!', '^']]
[['A', 'T', 'T', 'A', 'C', 'A', '!', '^', 'G']]
[['T', 'T', 'A', 'C', 'A', '!', '^', 'G', 'A']]
[['T', 'A', 'C', 'A', '!', '^', 'G', 'A', 'T']]
[['A', 'C', 'A', '!', '^', 'G', 'A', 'T', 'T']]
[['C', 'A', '!', '^', 'G', 'A', 'T', 'T', 'A']]
[['A', '!', '^', 'G', 'A', 'T', 'T', 'A', 'C']]
[['!', '^', 'G', 'A', 'T', 'T', 'A', 'C', 'A']]

尝试了排序和排序功能以及熊猫,但似乎不能使它工作

with open ('BWT_test.txt','r') as seq1:
    sequence1 = seq1.read()
    seq1.read()
list1 = list(sequence1)
list1.insert(0,'^')
list1.append('!')
for seq1 in range(len(list1)):
    table1 = [list1[seq1:] + list1[:seq1]]
    sorted(table1)
    print(table1)

代码应将列表组织为:

[['A', 'C', 'A', '!', '^', 'G', 'A', 'T', 'T']]
[['A', 'T', 'T', 'A', 'C', 'A', '!', '^', 'G']]
[['A', '!', '^', 'G', 'A', 'T', 'T', 'A', 'C']]
[['C', 'A', '!', '^', 'G', 'A', 'T', 'T', 'A']]
[['G', 'A', 'T', 'T', 'A', 'C', 'A', '!', '^']]
[['T', 'A', 'C', 'A', '!', '^', 'G', 'A', 'T']]
[['T', 'T', 'A', 'C', 'A', '!', '^', 'G', 'A']]
[['^', 'G', 'A', 'T', 'T', 'A', 'C', 'A', '!']]
[['!', '^', 'G', 'A', 'T', 'T', 'A', 'C', 'A']]

Tags: testtxt元素read排序顺序aswith
1条回答
网友
1楼 · 发布于 2024-06-03 00:00:30
sorted(data, key=lambda x: x[0])

或者

from operator import itemgetter
sort = sorted(data, key=itemgetter(0))

将循环更改为:

rotations = []
for seq1 in range(len(list1)):
    table1 = list1[seq1:] + list1[:seq1]
    rotations.append(table1)
rotations = sorted(rotations, key=lambda x: (x[0] not in string.ascii_letters, x[0]))
print([x[-1] for x in rotations])

相关问题 更多 >