按一定数量迭代列表

cyb*_*ron 0 python list

假设我有以下列表:

['id-1213fsr53', 'WAITING', '54-81-24-40', 'world', 'id-343252sfsg', 'WAITING', '54-41-06-143', 'hello']
Run Code Online (Sandbox Code Playgroud)

列表可以按以下格式细分为元组:

(id, status, ip-address, name)
Run Code Online (Sandbox Code Playgroud)

所以,在另一个检查状态,我需要通过这4个元素元组迭代该列表,如:

for s in status:
   (id, status, ip-address, name) = s # (s is a 4 element list)
   # increment s by 4, and continue the loop
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这样的行为python

jon*_*rpe 5

最简单的方法是grouper itertools配方:

def grouper(iterable, n, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)
Run Code Online (Sandbox Code Playgroud)

你可以这样使用:

for s in grouper(status, 4):
Run Code Online (Sandbox Code Playgroud)

请注意,如果status用于解压缩其中一个元组值和原始数据,则会出现问题.