我在 R 中有以下函数来生成 10 个随机彩票号码:
sprintf("%05d", sort(sample(0:99999, 10)))
输出:
"00582" "01287" "01963" "10403" "13274" "17705" "23798" "32808" "33668" "35794"
我已经像这样将它转换为 Python:
print(sorted(sample(range(99999), 10)))
输出:
[208, 10724, 12078, 27425, 34903, 49666, 60057, 67482, 68730, 78811]
在第一种情况下,我得到 5 位数字,而在第二种情况下,数字最多可以有 5 位数字,但也更少。
那么,有没有类似的方法来获取 5 位数字的列表(或第一种情况下的字符串)?
请您参考如下方法:
你可以结合str.format和 map,一个
print(*map('{:05}'.format, sorted(sample(range(99999), 10))))
此上下文中的星号 unpacks argument lists .换句话说,它从给定的 iterable 生成位置参数。 (在本例中为 map )。
您还可以将彩票号码存储为字符串列表
# Again using a map
ns = list(map('{:05}'.format, sorted(sample(range(99999), 10))))
# Using a list comprehension
ns = ['{:05}'.format(n) for n in sorted(sample(range(99999), 10))]
注意 python 的 range在[start, stop)中打开,所以使用
range(100000)
对于从 0 到 99999 的值范围。
