如何使用列表值清除和替换双端队列的值?

时间:2018-01-11 09:05:36

标签: python deque

我们说我有一个包含六个项目的列表

app = [6, 4, 6, 22, 255, 33]

但我想将这些数字传递给一个参数 - 但一次只能传递3个数字

我该怎么做?

现在我使用了具有最大限制的双端队列,但我不知道如何将值替换为下一组。

3 个答案:

答案 0 :(得分:2)

您可以使用Python的子阵列表示法。例如。前三个元素为app[:3],第二个元素为app[1:4](= [4, 6, 22])。

如果您的函数需要三个参数,则可以使用*运算符传递它们:

def f(a, b, c):
    ...

f(*app[:3])

答案 1 :(得分:2)

循环解决方案:

app = [6, 4, 6, 22, 255, 33]

for i in range(0, len(app), 3):
   print(app[i], app[i+1], app[i+2])

zip解决方案:

app = [6, 4, 6, 22, 255, 33]

for (i, j, q) in zip(app[::3], app[1::3], app[2::3]):
    print(i, j, q)

更一般的解决方案。来自itertools recipesGrouper

from itertools import izip_longest

app = [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14]

def grouper(iterable, n, fillvalue=None):
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)


for i, j, q, r in grouper(app, 4):
    print(i, j, q, r)

答案 2 :(得分:1)

您可以使用python切片。用浏览器编写的代码,未经过测试

它确实创建了一个新数组,但它是一个小数组

for i in range(len(app)-3):
    slice = app[i:i+3]
    myfun(slice[0], slice[1], slice[2])