Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一次遍历两个字符的字符串_Python_String_Iteration - Fatal编程技术网

Python 一次遍历两个字符的字符串

Python 一次遍历两个字符的字符串,python,string,iteration,Python,String,Iteration,我有一个数据字符串,我需要从中读取前两个字符,使用,然后丢弃 比如说, code = '2436444423' 我想将“24”赋值给值“x”,并从原始字符串中删除“24”,保留为: code = '36444423' 然后将“36”分配给“y”,将其删除,“44”分配给“z”,依此类推,直到原始字符串为空。执行以下操作: code = '2436444423' code = iter(code) for x in code: print x, next(code) 以下是使用生成器

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

比如说,

code = '2436444423'
我想将“24”赋值给值“x”,并从原始字符串中删除“24”,保留为:

code = '36444423'
然后将“36”分配给“y”,将其删除,“44”分配给“z”,依此类推,直到原始字符串为空。

执行以下操作:

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

以下是使用生成器的一种方法:

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
的绑定。另外,如果代码长度为奇数,它将不会返回最后一个字符。

您可以使用(在python 3中,its
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)

v,w,x,y,z=[code[i:i+2]表示范围内的i(0,len(code),2)]
我认为这不太可读;乍一看,我永远猜不出这与情侣有关。而且显式比隐式好。没有赋值。事实上,最好使用ZIP,而不是同时循环字符串和迭代器。Kasra:一种简单的方法。如果#字符是偶数,请参见findall(“..”,“1234567890”)。如果#字符是奇数的re.findall('..?','123456789'),另一种非常简单的方法是:使用twoCharList=re.findall('..?','123456789')。无论字符数是奇数还是偶数,这都会起作用。@mario23是的,这是一个很好的解决方案,但不适用于长字符串!Shashank:你能在下一个答案的评论中考虑我的答案吗?当“字符”也很奇怪时,它就起作用了。@mario23我读了你的答案,这很好,但我认为在我的答案中没有意义。也许你可以发布一个关于
re
模块的自己的答案?