我在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位数的列表(或第一种情况下的字符串)?
答案 0 :(得分: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之间的值范围。
答案 1 :(得分:1)
您需要format string
out = []
for number in sorted(sample(range(99999), 10))):
out.append('{:05d}'.format(number))
print(out)