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

时间:2017-05-20 05:33:31

标签: python for-loop range

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

2 个答案:

答案 0 :(得分:0)

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

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)

答案 1 :(得分:0)

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

  • &#39; 000&#39 ;;
  • 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