000 000 0000
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
我想将所有输出保存在变量类型列表中
输出如下所示:
下面的代码显示了生成字符串的更简单方法,还演示了如何将它们追加到列表中而不是打印它们。
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