python迭代元组中的两个列表,并比较两个列表之间的整数
我这里有一个特定的数字python迭代元组中的两个列表,并比较两个列表之间的整数,python,list,zip,compare,tuples,Python,List,Zip,Compare,Tuples,我这里有一个特定的数字 x = 6 这里有两个列表 list1 = [1, 5, 10] list2 = [3, 7, 20] 我想找到特定数字6的位置,它分别位于列表1和列表2中的5和7之间 Like 6位于列表1和列表2的“第一个索引”之间(基于0), 这意味着两个列表必须迭代并比较数字 for a,b in zip(list1,list2): if a <= x <=b: 而x属于元组的第一个索引[(0)、(1)、(2)] 如何获取此信息?使用next和enum
x = 6
这里有两个列表
list1 = [1, 5, 10]
list2 = [3, 7, 20]
我想找到特定数字6的位置,它分别位于列表1和列表2中的5和7之间
Like 6位于列表1和列表2的“第一个索引”之间(基于0),
这意味着两个列表必须迭代并比较数字
for a,b in zip(list1,list2):
if a <= x <=b:
而x
属于元组的第一个索引[(0)、(1)、(2)]
如何获取此信息?使用
next
和enumerate
:
>>> x = 6
>>> next((i for i, (a, b) in enumerate(zip(list1, list2)) if a<=x<=b), None)
1
@Karyo
i
用于存储从enumerate
返回的索引:i,(a,b)=(0,(1,3))
,这样的赋值被调用。是否有方法向后枚举元组?像[(2,(1,3)),(1,(5,7)),(0,(10,20))]@Karyo您可以使用:zip(xrange(len(list1)-1,-1,-1),zip(list1,list2))
Shell返回NameError:name'xrange'未定义。我使用的是3.3.2版本,范围也不起作用。TypeError:unorderable types:int()@Karyonext
没有错,你把括号放错了地方:next((i代表i,(a,b)在zip(范围(len(list1)-1,-1,-1),zip(list1,list2))如果a
>>> x = 6
>>> next((i for i, (a, b) in enumerate(zip(list1, list2)) if a<=x<=b), None)
1
>>> list(enumerate(zip(list1, list2)))
[(0, (1, 3)), (1, (5, 7)), (2, (10, 20))]