一次迭代一个字符串两个字符

时间:2015-04-15 19:43:10

标签: python string iteration

我有一串数据需要读取前两个字符,使用然后丢弃。

例如,

code = '2436444423'

我想采取' 24'将其分配给值' x'并删除 24'从原始字符串中将其保留为:

code = '36444423'

然后分配' 36'到' y,删除它,' 44'到' z'依此类推,直到原始字符串为空。

3 个答案:

答案 0 :(得分:2)

你可以使用itertools.izip_longest(在python 3中zip_longest)来获得预期的对:

>>> from itertools import izip_longest
>>> args = [iter(code)] * 2
>>> [''.join(k) for k in izip_longest(*args)]
['24', '36', '44', '44', '23']

然后你可以简单地将你的值分配给变量,如果你想要整数类型的数字,可以使用int

>>> x,y,z,j,p=[int(''.join(k)) for k in izip_longest(*args)]
>>> (x,y,z,j,p)
(24, 36, 44, 44, 23)

答案 1 :(得分:1)

这样做:

code = '2436444423'
code = iter(code)
for x in code:
    print x, next(code)

答案 2 :(得分:0)

这是使用生成器的一种方式:

code = '2436444423'
g = (''.join(t) for t in zip(*[iter(code)]*2))
x, y = next(g), next(g)
z = next(g)

这也可以是一个评估为['24', '36', '44', '44', '23']的列表理解。

[''.join(t) for t in zip(*[iter(code)]*2)]

免责声明:这不会在任何时候改变变量code的绑定。此外,如果代码长度为奇数,则不会返回最后一个字符。