【问题标题】:How to join a consecutive tuples by comma in nested list?如何在嵌套列表中通过逗号连接连续的元组?
【发布时间】:2016-10-17 05:09:11
【问题描述】:

我有四个来自用户的输入值,如下所示:

numbers[1, 2]
numbersLetters={'E': 1,'K': 2}
RandomFrequency="0.5"

在这里,我的目标是随机化数字列表并获得大于 0.5 的随机数。

然后,从 numbersLetters 字典中获取选择的随机 no 的字母。

最后,将所有匹配的随机 no 以及相应的字母附加到另一个列表的列表中的单个元组中。

预期的输出是这样的:

[[('1', 'E'), ('2', 'K')]]

我得到了什么:

[[('1', 'E')], [('2', 'K')]]

我的脚本

import random

def randomMutation(numbers,numbersLetters,MF):
    mut=[]
    for res,pos in numbersLetters.iteritems():
        r = random.choice([x for x in numbers if x > MF])
        if pos==r:
            fp=int(pos)-1
            mut.append([tuple(str(pos)+res)])
    print mut

if __name__ == '__main__':
    randomMutation([1, 2],{'E': 1,'K': 2},"0.5")

我得到了答案:

import random

def randomMutation(numbers,numbersLetters,MF):
    mut=[]
    for res,pos in numbersLetters.iteritems():
        r = random.choice([x for x in numbers if x > MF])
        if pos==r:
            fp=int(pos)-1
            mut.append((tuple(str(pos)+res)))#changes
    if not mut:
        print "The possibility of random positions is not available for given thresold value ( > "+ str(MF)+")"
    else:
        mutation_combinations = chain.from_iterable([list(combinations([mut], 1))])

if __name__ == '__main__':
    randomMutation([1, 2],{'E': 1,'K': 2},"0.5")

【问题讨论】:

  • 为什么列表里面有元组?为什么不[('1', 'E'), ('2', 'K')]
  • 如果MF 是一个字符串,你的x > MF 测试永远不会通过,因为Python 2 总是将数字排在其他类型之前(所以2 > "0.5" 总是false)。你确定你没有传入0.5 没有引号?
  • 是的,我没有通过,这里我只是举个例子。谢谢
  • 我想把它放在嵌套列表中,因为稍后我想根据 tubles 列表进行提取。

标签: python list dictionary random tuples


【解决方案1】:

您在列表中添加一个元组

mut.append([tuple(str(pos)+res)])

去掉[...]括号;这些创建您的嵌套列表对象,您不需要它:

mut.append(tuple(str(pos)+res))

与其连接字符然后将字符串转换回元组,不如直接创建元组:

mut.append((str(pos), res))

【讨论】:

  • 根据您的建议,我通过这一行创建了元组列表:mut.append(tuple(str(pos)+res)。然后我得到如下元组列表 mut=[('G', '1', 'E'), ('G', '2', 'K')]. 最后,我通过 mutation_combinations = chain.from_iterable([list(combinations([mut], 1 ))])
  • 它与添加另一行一起工作-> mutation_combinations = chain.from_iterable([list(combinations([mut], 1))]。我更新了正确的脚本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-15
  • 2022-06-17
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
相关资源
最近更新 更多