从元组中选择一个随机数+一些数字

时间:2017-09-10 19:06:17

标签: python random tuples

我有一个数字元组,我想从我的元组中选择一个随机数以及一定数量。例如:

my_tuple = (1,2,3)

我有数字4.我想从数字1,2,3,4中选择一个随机数(当然不改变元组)。

我试过了:

my_tp = (1, 2, 3)
a = random.choice(list(my_tp).append(4))
print(a)

我是python的新手。我尝试将元组转换为列表,然后执行随机函数。 上面的代码不起作用。得到错误

  

'NoneType'类型的对象没有len()

会喜欢一些帮助。

3 个答案:

答案 0 :(得分:2)

方法list.append改变提供的列表并返回None,这解释了您获得的异常。要获得所需的结果,您可以隐式使用tuple.__add__方法,该方法将返回一个新元组。

values = (1, 2, 3)
random.choice(values + (4,))

如果您想以简洁的方式删除值,使用set可能是合适的。

values = {1, 2, 3}
random.choice(list(values - {3}))

答案 1 :(得分:2)

list.append返回none

转换为list之后,追加会修改list,但会返回none,因此这是您error的来源。

为了解决这个问题,您可以将tuple转换为list,然后转换为append 4,然后使用random.choice,或者只需一步即可将其连接起来带有[4]操作数的+列表。

这种方法更简单:

import random

my_tuple = (1,2,3)
random.choice(list(my_tuple) + [4])

希望这有助于澄清一些事情! :)

<强>更新

如果你想从没有最后一项的元组中随机选择,那么只需slice具有正常语法的列表:

random.choice(list(my_tuple)[:-1])

答案 2 :(得分:1)

您可以尝试:

my_tuple = (1,2,3)
random.choice((*my_tuple, 4))

其中(*my_tuple, 4)创建一个包含my_tuple4解压缩内容的新元组。