现实中经常碰到这种场景,比如数字字符串列表
['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14']
上面的数据有两个特点:
- 1. 上面的数字首先是顺序,从1到14递增
- 2. 每个都两位字符串,不够的话,前面补齐0
要生成上面的列表,可用格式化字符串来完成。 能想到比较酷的实现方式如下:
方法一:
>>> list(map(lambda i:'%02d' % i, range(1, 15)))
['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14']
方法二:
>>> ["{:02}".format(i) for i in range(1, 15)]
['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14']
有了上面的知识垫底,如果要随机选号,比如彩票中很流行的双色球,大乐透选号。 假如你想随机自己选一注双色球。 双色球由33个红球 + 16个蓝号组成。 6红 + 1蓝就是一注号码。 可以写一个函数轻松实现:
>>> def random_choice():
... import random
... red_ball_list = ["{:02}".format(i) for i in range(1, 34)]
... blue_ball_list = ["{:02}".format(i) for i in range(1, 17)]
... red_choice = sorted(random.sample(red_ball_list, 6))
... blue_choice = random.sample(blue_ball_list, 1)
... return ' '.join(red_choice) + ' + ' + blue_choice[0]
>>> random_choice()
'04 06 08 23 32 33 + 02'