使用列表推导在列表中切割字符串

时间:2018-03-22 14:19:17

标签: python

我有一个列表,我想要分成三个单独的列表,这些列表是从列表中的第一个,第二个和第三个位置创建的。它看起来像这样:

输入:

X = ['GCA','GCC','GCT','GCG']

输出:

C1 = ['G', 'G', 'G', 'G']
C2 = ['C', 'C', 'C', 'C']
C3 = ['A', 'C', 'T', 'G']

我在考虑使用列表理解。做类似的事情:

C1 = [p for p in X if X[0][0]]

但我不知道如何切片列表中的字符串。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

对于您使用理解的尝试,您只需要像

这样的代码
C1 = [p[0] for p in X]
C2 = [p[1] for p in X]
C3 = [p[2] for p in X]

或使用zip()

C1, C2, C3 = zip(*X)

答案 1 :(得分:0)

使用zip()的@Chris_Rands答案更好,但因为您还询问了列表理解:

C1=[s[0] for s in X]

作品。

[[s[n] for s in X] for n in range(3))]会将所有这些作为列表。

输出:[['G', 'G', 'G', 'G'], ['C', 'C', 'C', 'C'], ['A', 'C', 'T', 'G']]