0

我这里有一定的号码...

x = 6

和这里的两个列表...

list1 = [1, 5, 10]
list2 = [3, 7, 20]

我想找到某个数字 6 的位置,它分别在 list1 和 list2 的 5 和 7 之间。

就像 6 在 list1 和 list2 的“第一个索引”之间(基于 0),这意味着两个列表都必须迭代并比较数字

for a,b in zip(list1,list2): 
    if a <= x <=b:

上面for循环的细节是这样的

[(1,3),(5,7),(10,20)]

x属于元组的第一个索引 [(0),(1),(2) ]

我怎样才能得到这个?

4

1 回答 1

2

使用nextenumerate

>>> x = 6
>>> next((i for i, (a, b) in enumerate(zip(list1, list2)) if a<=x<=b), None)
1

enumerate从传递给它的可迭代/迭代器返回索引和项目,next否则将返回迭代器的第一个项目None

>>> list(enumerate(zip(list1, list2)))
[(0, (1, 3)), (1, (5, 7)), (2, (10, 20))]
于 2013-11-02T08:04:56.703 回答