【问题标题】:slicing string in list using list comprehension [duplicate]使用列表理解在列表中切片字符串[重复]
【发布时间】:2018-03-22 14:19:16
【问题描述】:

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

输入:

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]]

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

感谢您的帮助。

【问题讨论】:

  • C1, C2, C2 = zip(*X)
  • 你为什么要这样分解你的密码子?这显然是 DNA
  • @Chris_Rands 这是一个答案,不是评论...
  • 谢谢,这有帮助。 @Chris_Rands 我正在编写一个脚本,根据氨基酸数据为我提供扩展的密码子。我需要基于位置的密码子列表,然后与扩展密码子字典进行比较。还要感谢 Zinki,这也很有帮助。

标签: python


【解决方案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)

【讨论】:

  • 我想你可能从某人那里得到了zip()的想法,最初你说这是不可能的;)
【解决方案2】:

@Chris_Rands 使用zip() 回答更好,但由于您还询问了列表理解:

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']]

【讨论】:

    猜你喜欢
    • 2021-03-18
    • 2018-04-17
    • 2020-11-08
    • 1970-01-01
    • 2012-12-15
    • 2018-05-13
    • 1970-01-01
    • 2011-10-24
    • 2021-04-28
    相关资源
    最近更新 更多