我想将所有输出保存在变量类型列表中


for i in range(9999999):
if i <= 9:
    print '000',i,'000000'
elif i <= 99:
    print '000',i,'00000'
elif i <= 999:
    print '000',i,'0000'
elif i <= 9999:
    print '000',i,'000'
elif i <= 99999:
    print '000',i,'00'
elif i <= 999999:
    print '000',i,'0'
elif i <= 9999999:
    print '000',i

我想将所有输出保存在变量类型列表中
输出如下所示:

000 000 0000

下面的代码显示了生成字符串的更简单方法,还演示了如何将它们追加到列表中而不是打印它们。

lst = []
for i in range(9999999):
    if 100 <= i <= 999:
        prefix = "050"
    else:
        prefix = "000"
    i_str = str(i)
    suffix = "0" * (7-len(i_str))
    result = prefix + " " + i_str + " " + suffix
    # or result = " ".join((prefix, i_str, suffix))
    lst.append(result)

似乎对于每个小于 9 999 999 的i,您的目标是构建一个由三部分组成的字符串:

  • "000";
  • i的字符串表示形式;
  • 一个零序列,取决于 i 的字符串表示的长度。

您可以通过简单的列表理解来实现这一目标:

lst = ['000 %d %s'.strip() % (i, '0' * (7-len(str(i)))) for i in xrange(9999999)]

但是请注意,如此大的列表需要一些时间来构建并占用一些内存。

如果您不需要一次完成整个列表,但要逐个处理其元素,我建议您创建一个生成器:

lst_gen = ('000 %d %s'.strip() % (i, '0' * (7-len(str(i)))) for i in xrange(9999999))

然后循环它:

for s in lst_gen:
    print s

或者要求后续元素并逐个处理:

s = next(lst_gen)
print s
s = next(lst_gen)
print s

最新更新