使用Python创建一组唯一的值length L

2024-06-18 14:49:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要创建一个指定长度的唯一值列表。我现在的做法是

[str(i+1).ljust(subscriber_length, "0") for i in range(count)]

但是,这不会给出唯一的数字,因为如果订户长度大于9,则n、n0和n00都给出相同的值,例如,1、10和100都给出100作为值。你知道吗

我知道一定有更好的办法。你知道吗

预期的输出需要是一个长度为(订户长度)的数字串(目前数字还可以),它被插入到CSV文件中并进行处理,因此前面的0不起作用。你知道吗

例如,如果订户长度为7,则可接受的范围为

|ID     |
|1000000|
|1000001|
|1000002|

因为这是测试数据,所以值是什么并不重要,重要的是它们是唯一的,不可能去掉前面的0。你知道吗


Tags: in列表forcountrange数字lengthsubscriber
1条回答
网友
1楼 · 发布于 2024-06-18 14:49:20

range函数支持设置起始值,因此可以将其设置为合适的值,然后将每个值强制转换为str

如果希望标识符的长度为7个字符,请将起始值设置为1000000(10**6):

>>> count = 100
>>> subscriber_length = 7
>>> start = 10 ** (subscriber_length -1)
>>> end = start + count
>>> L = [str(i) for i in range(start, end)]

# There's no duplication
>>> len(L) == len(set(L)) == count
True

# All the values are the correct length
>>> all(len(x) == subscriber_length for x in L)
True

对于长度大于9的代码仍然有效。你知道吗

>>> count = 100
>>> subscriber_length = 12
>>> start = 10 ** (subscriber_length -1)
>>> end = start + count
>>> L = [str(i) for i in range(start, end)]
>>> len(L) == len(set(L)) == count
True
>>> all(len(x) == subscriber_length for x in L)
True

相关问题 更多 >