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

时间:2016-09-09 14:23:16

标签: python python-2.7 for-loop extract multiple-columns

我有一个包含3个序列的列表

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

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

最终输出应为

seq_list = ['AAA', 'CTC', 'GTC','TTC']

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

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

3 个答案:

答案 0 :(得分:2)

通过你的方法我做了一点修改,对于每个内部public class ETCollapsableTableItem 循环,我创建了一个for,然后在内部string循环结束后,我将其附加到for:< / p>

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

虽然您可以使用@alecxe代码(使用['AAA', 'CTC', 'GTC', 'TTC'] zip)。我认为这很酷,也更加炽热。

答案 1 :(得分:1)

或者,您可以"zip" the sequencejoin

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

答案 2 :(得分:-2)

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. 最后,从序列的开头删除now-empty列表列表。