Python 生成唯一数字序列号

使用Python生成一些唯一数字序列号,因为8进制里没有9,以9作为分隔,这样前面的作为序号可以方便查询,又可以确保序列号唯一性。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/python
#--coding:utf-8--#

import random


class RandomSerial(object):
def __init__(self):
self.num_list = []
self.serial_list = []
def random_num(self, lenth):
for i in xrange(lenth):
self.num_list.append(random.randint(0, 8))

return ''.join([str(item) for item in self.num_list])

def get_code(self, num):
for i in xrange(0, num):
serial = (oct(i) + "9")
lenth = len(serial)
serial = (serial + self.random_num(8 - lenth))
self.num_list = []
self.serial_list.append(serial)

def get_id(self, serial):
self.id = serial.split('9')
return self.id[0]

测试如下:

1
2
3
4
5
6
7
8
9
10
11
In [5]: from test import RandomSerial

In [6]: get_serial = RandomSerial()

In [7]: get_serial.get_code(10)

In [8]:
print([get_serial.serial_list[9], get_serial.get_id(get_serial.serial_list[9])])

#output
['01196641', '011']