Python使用random.choices输出带方括号,如何转为单个整数输出
问题根因
random.choices()方法未指定k参数时,默认返回长度为1的列表,直接打印就会出现带方括号的[0]这类格式- 你需要生成100个整数,需要显式给
k参数传值100,不需要多次调用该方法
修正后代码
import random a_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] a_listDistribution = [0.5, 0.4, 0.0125, 0.0125, 0.0125, 0.0125, 0.0125, 0.0125, 0.0125, 0.0125] # 生成100个符合概率分布的整数 att1Int = random.choices(a_list, weights=a_listDistribution, k=100) # 把整数转成字符串后用逗号拼接再打印 print(','.join(map(str, att1Int)))
代码说明
- 给
random.choices()加k=100参数,一次生成100个符合概率要求的整数,返回的是长度为100的整数列表 - 用
map(str, att1Int)把列表里的所有整数转为字符串类型,再用','.join()把所有字符串用逗号拼接成完整的字符串,打印出来就是你要的0,0,1,0格式 - 如果你坚持要循环单次生成逐个打印,也可以在调用
random.choices()后取下标为0的元素:att1Int = random.choices(a_list, a_listDistribution)[0],再调整打印参数控制分隔符即可,不过该方案容易出现末尾多余逗号,更推荐上面的一次性生成方案。
内容的提问来源于stack exchange,提问作者NewToAllThisJazz
相关产品推荐
相关产品推荐

