我有一个数字元组,我想从我的元组中选择一个随机数以及一定数量。例如:
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()
会喜欢一些帮助。
答案 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_tuple
和4
解压缩内容的新元组。