【问题标题】:Storing a collection of integers in a list将整数集合存储在列表中
【发布时间】:2013-11-09 10:15:23
【问题描述】:

我有一个包含 RNA 碱基字母的列表和一个将它们转换为数值的字典。我想要做的是将这些数值存储到一个新列表中。我有:

RNA_list = ['C', 'G', 'A', 'U']
RNA_dictionary = {'A': 1, 'U': 2, 'C': 3, 'G': 4}
for i in RNA_list:
    if i in RNA_dictionary:
        RNA_integers = RNA_dictionary[i]
    else:
        print()

所以 RNA_integers 是 3、4、1、2,但我需要以某种方式将它们存储在一个列表中。我想做类似的事情:

RNA_integer_list = []
for i in RNA_integers:
    RNA_integer_list = RNA_integer_list + i

但这会导致错误,因为 for 循环无法遍历整数。我是 Python 新手,所以我不确定如何处理这个问题。如果有其他人可以帮助我,我将不胜感激!

【问题讨论】:

  • 感谢您的帮助!
  • 你希望用它来“翻译”一个序列吗?不清楚为什么RNA_integers = [3,4,1,2] 不是最简单的解决方案,除非您要将AAAUUUCCCGGG 之类的序列解析为111222333444...?
  • 翻译表可能是一个很好的方法。

标签: python list python-3.x integer


【解决方案1】:

你可以的

RNA_list = ['C', 'G', 'A', 'U']
RNA_dictionary = {'A': 1, 'U': 2, 'C': 3, 'G': 4}
RNA_integers = []
for i in RNA_list:
    if i in RNA_dictionary:
        RNA_integers.append (RNA_dictionary[i])

print RNA_integers

输出

[3, 4, 1, 2]

或使用list comprehension

RNA_integers = [RNA_dictionary[i] for i in RNA_list if i in RNA_dictionary]

【讨论】:

  • 或者只是[RNA_dictionary[k] for k in RNA_list]
  • 如果k 不在RNA_dictionary 中怎么办?
  • @thefourtheye 在这种情况下,让它快速而大声地失败?
【解决方案2】:

你可以这样做:

RNA_dictionary.values()

获取[1, 3, 2, 4]

编辑:如果您需要保持与 RNA_list 类似的顺序,您可以按照thefourtheye 的建议使用列表推导:

RNA_integers = [RNA_dictionary[i] for i in RNA_list if i in RNA_dictionary]

【讨论】:

  • Python dicts 不会将它们的值保持在保证的顺序中。
  • @kojiro OP 没有提到任何关于订单的内容。
  • OP 似乎想将他的 RNA 碱基字母列表转换为具有整数等价物的列表——这意味着保持原始列表的顺序。
  • @dparpyani 我认为他想保持订单是一个公平的假设。
  • @kojiro 够公平的。我添加了一个编辑来涵盖该场景。 :)
【解决方案3】:

或者你可以使用map:

map(RNA_dictionary.get, RNA_list)

【讨论】:

    【解决方案4】:

    你试试这个,

    RNA_list = ['C', 'G', 'A', 'U']
    RNA_dictionary = {'A': 1, 'U': 2, 'C': 3, 'G': 4}
    RNA_integers = []
    for i in RNA_list:
        if RNA_dictionary[i]:
            RNA_integers.append (RNA_dictionary[i])
    
    print RNA_integers
    

    输出将是

    [3,4,1,2]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-29
      • 2020-11-01
      • 2018-09-23
      • 1970-01-01
      • 2021-04-13
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多