a = [3,5,8,3,9,5,0,3,2,7,5,4]
for o in a[::3]:
print o
这让我得到第一个和每3个项目。 3,3,0,7
有没有办法可以检索下两个项目?
a = [3,5,8,3,9,5,0,3,2,7,5,4]
for o in a[::3]:
if o == 0:
print o
print o + 1
print o + 2
输出0 3 2
我知道这不正确,但也许你可以看到我正在尝试做的事情。基本上,我有很长的属性列表,每个属性有三个部分,parent_id,property_type和property_value,我需要从列表中检索属性的所有三个部分。
答案 0 :(得分:14)
你可以使用"石斑鱼"来自itertools
documentation的食谱:
def grouper(n, iterable, fillvalue=None):
"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
示例:
>>> a = [3, 5, 8, 3, 9, 5, 0, 3, 2, 7, 5, 4]
>>> list(grouper(3, a))
[(3, 5, 8), (3, 9, 5), (0, 3, 2), (7, 5, 4)]
答案 1 :(得分:2)
>>> a = [3,5,8,3,9,5,0,3,2,7,5,4]
>>> for pos in xrange(0, len(a), 3):
... print a[pos:pos+3]
...
[3, 5, 8]
[3, 9, 5]
[0, 3, 2]
[7, 5, 4]
>>>
答案 2 :(得分:2)
不是非常pythonic,但你可以使用:
for i in range(0, len(a), 3):
print a[i]
print a[i+1]
print a[i+2]
答案 3 :(得分:2)
试试这个:
array = [3,5,8,3,9,5,0,3,2,7,5,4]
for i in xrange(0, len(array), 3):
a, b, c = array[i:i+3] # partition the array in groups of 3 elements
print a, b, c
它有效,因为(如问题中所述)每个属性恰好有三个部分。
答案 4 :(得分:2)
如果您知道每个部分恰好有三个部分,那么简单地说:
a = [3,5,8,3,9,5,0,3,2,7,5,4]
print zip(*[iter(a)] * 3)
输出:
[(3, 5, 8), (3, 9, 5), (0, 3, 2), (7, 5, 4)]
来自this回答。
答案 5 :(得分:1)
x = a[::3]
y = a[1::3]
z = a[2::3]
grouped = zip(x,y,z)
for p1,p2,p3 in grouped:
print p1 + p2 + p3