python - Loop For 和 Zip(),选择要打印的记录数

标签 python python-3.x

我有一个可以正常工作的代码,但是它只从 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]]

如何做到这一点?

最佳答案

您可以使用生成器表达式,在 n(指定输出记录数的新参数)范围内迭代和切片 entrada,并将其输出解包为参数到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)

关于python - Loop For 和 Zip(),选择要打印的记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55456002/

相关文章:

python - 不断缩放 3 个圆直到它们相交

python - 当 dict 中的值是一个列表时,如何对 dict 进行这样的分割?

python - 如何在 Django 中使用变量重定向?

python - 使用nltk.tag.brill_trainer(基于转换的学习)训练IOB Chunker

python - Tornado MySQLDB SSL 连接

python - 这个函数在 Python 中涉及 urllib2 和 BeautifulSoup 做什么?

windows - 导入错误 : No module named 'pandas.compat.numpy'

python - 按顺序生成字母数字字符串

python - Plotly/Dash - Python 如何在一段时间后停止执行?

python - 修改 tk.Button 上的部分文本