我有一个正常工作的代码,但是它仅从entrada
中选择4个值。我希望能够为每个参数设置此金额。
def pdd(number, entrada):
for i, j, k, l, m in zip(entrada[:-1], entrada[1:], entrada[2:], entrada[3:], entrada[4:]):
if number in i:
print([j, k, l, m])
list_pad = [[1, 9], [1, 15], [1, 10], [1, 11], [1, 12], [1, 13], [1, 15], [1, 14], [1, 15], [1, 16], [1, 17], [1, 18]]
pdd(15, list_pad)
输出:
[[1, 10], [1, 11], [1, 12], [1, 13]]
[[1, 14], [1, 15], [1, 16], [1, 17]]
基本上它将解析输入,在这种情况下,它是一个包含小列表的列表。然后,它分析输入,并通过标识具有number
参数传递的数字的项目(列表),将打印接下来的4个项目(列表)。这段代码已经完成了,但是我希望能够通过传递给函数的参数(而不是4)来设置数量
但是我希望不设置4条记录,而是希望能够为每个参数设置数量。
示例:
pdd(15, list_pad, 6)
并应离开:
[[1, 10], [1, 11], [1, 12], [1, 13], [1, 15], [1, 14]]
示例2:
pdd(15, list_pad, 2)
并应离开:
[[1, 10], [1, 11]]
[[1, 14], [1, 15]]
[[1, 16], [1, 17]]
该怎么做?
答案 0 :(得分:1)
您可以使用生成器表达式来对entrada
范围内的n
进行迭代和切片,新参数指定输出记录的数量,并将其输出解压缩为zip
的参数。 :
def pdd(number, entrada, n):
for i, *j in zip(entrada, *(entrada[i:] for i in range(1, n + 1))):
if number in i:
print(j)
答案 1 :(得分:1)
这可能更简单:
def pdd(num,data,len):
for i,v in enumerate(data[:-len]):
if num in v:
print(data[i+1:i+len+1])