gpt4 book ai didi

python - 如何打印出包含重复元素的列表中的索引

转载 作者:太空狗 更新时间:2023-10-30 02:32:12 25 4
gpt4 key购买 nike

我想创建一个函数,它在参数中有一个列表和一个阈值。此函数将为列表中的值返回一个 int 索引列表,这些值比先前的值大阈值或更多。

到目前为止,我创建了:

def bigger(lst, number):
x = []
for a, prev in zip(lst[1:], number):
diff = a - prev
if diff >= 2:
x.append(a)
print(x)

bigger([0,1,-1,3,7,4,5,3,2,4,8],2)

这将打印出满足以下条件的数字列表,但我想打印索引列表。所以它应该打印出 [3, 4, 9, 10] (索引)但它打印出 [3, 7, 4, 8]

最佳答案

使用 zipenumerateenumerate 将返回索引和项目:

def solve(lis, num):
for i, (x, y) in enumerate(zip(lis, lis[1:]), 1):
if y - x >= num:
yield i

print list(solve([0,1,-1,3,7,4,5,3,2,4,8], 2))
#[3, 4, 9, 10]

如果你也想支持生成器,那么:

from itertools import tee, izip
def solve(lis, num):
it1, it2 = tee(lis, 2)
next(it2) #drop first item
for i, (x, y) in enumerate(izip(it1, it2), 1):
print x, y
if y - x >= num:
yield i

print list(solve((x for x in [0,1,-1,3,7,4,5,3,2,4,8]), 2))
#[3, 4, 9, 10]

关于python - 如何打印出包含重复元素的列表中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19628724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com