Skip to main content
 首页 » 编程设计

python之生成彩票号码之将 R 语句转换为 Python

2025年05月04日15artech

我在 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 的值范围。