如何使用Python从嵌套的列中提取多个行?

2024-09-23 20:23:45 发布

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

我有三个序列的列表

seq_list = ['ACGT', 'ATTT', 'ACCC']

我想从列表中提取列,并使用python中的嵌套循环将其存储在另一个列表中

最终输出应该是

^{pr2}$

我已经编写了以下代码,但是它没有产生所需的输出。在

column = []
for i in range(len(seq_list[0])):   #Length of the row
    for j in range(len(seq_list)):    #Length of the column
        column.append(seq_list[j][i])
         print column

Tags: ofthein列表forlenrangecolumn
3条回答

通过您的方法,我做了一些修改,对于每个内部for循环,我创建了一个string,然后在内部for循环结束后,我将其附加到column

seq_list = ['ACGT', 'ATTT', 'ACCC']
column = []
for i in range(len(seq_list[0])):   #Length of the row
    string = ""
    for j in range(len(seq_list)):    #Length of the column
        string += seq_list[j][i]
    column.append(string)
print column

输出:

^{pr2}$

尽管您可以使用@alecxe代码(使用zipjoin)。我觉得它很酷,而且更像Python。在

new_seq_list = reduce(
  lambda new_seq_list,item:
    new_seq_list + [''.join([item.pop(0) for item in new_seq_list[0]])]
  , range(max([len(item) for item in seq_list])) ,
  [[list(item) for item in seq_list]]
)[1:]
  1. 将原始列表转换为字符列表,而不是字符串列表
  2. 为最长字符串中的每个字符减少一次该列表
  3. 每减少一次,在新列表中添加一个字符串,该字符串由从每个字符列表中删除的第一项组成,并将其连接在一起。在
  4. 最后,从序列的开头删除现在为空的列表。在

或者,您可以"zip" the sequence和{a2}:

>>> [''.join(item) for item in zip(*seq_list)]
['AAA', 'CTC', 'GTC', 'TTC']

相关问题 更多 >