Python 索引元组中最大的元素

Python 索引元组中最大的元素,python,tuples,Python,Tuples,结果 a = (3,4,11,12,5,2,7,8,6,9,10) for i in range(len(a)): b = a[i] for x in range(2,15): if b > x: c = i print(c) 在上面的示例中,我试图通过将每个元素与特定范围(2-14)进行比较,从元组a中提取最大的元素 上面例子的结果应该是3(索引为12),但我得到了10 有人能告诉我代码有什么问题吗?结果是10,因为元组有11个元素,最后一个的索引是10

结果

a = (3,4,11,12,5,2,7,8,6,9,10)
for i in range(len(a)):
  b = a[i]
  for x in range(2,15):
    if b > x:
       c = i
print(c)
在上面的示例中,我试图通过将每个元素与特定范围(2-14)进行比较,从元组a中提取最大的元素

上面例子的结果应该是3(索引为12),但我得到了10


有人能告诉我代码有什么问题吗?结果是10,因为元组有11个元素,最后一个的索引是10

在第二个循环中将此索引设置为
c

>>> 
10
>>> 
因为10是循环的元组的最后一个值,
b>x对于
b=10
,至少有一次为真,
c
被分配了索引10(即10),并且该索引是最后打印的


你将如何纠正这个问题

我会这样做:

for x in range(2,15):
    if b > x:
        c = i
这张照片是3张

它只是在元组上循环,检查当前值是否在2-15范围内,值是否大于以前的最高值,如果两者都为真,则将当前索引设置为新的
c


输出:

您的代码只提供最后一个元素的索引,它位于您定义的范围内(实际上是索引10)

您需要存储局部最大值并将每个新元素与之进行比较(而不是使用范围(2,15))

我不太熟悉python,但要获得最大元素的索引,这可能是一个解决方案:

a = (3,4,11,12,5,2,7,8,6,9,10)
c = 0
for i in range(len(a)):
    if a[i] in range(2, 15) and a[i] > a[c]:
        c = i
print(c)

为什么要使用for循环呢

a = (3,4,11,12,5,2,7,8,6,9,10)
localMaximum = 0

for i in range(len(a)):

    b = a[i]

    if b>localMaximum:
        localMaximum = b
        c = i

print(c)
如果要在2个索引之间的特定范围内查找局部最大值

a = (3,4,11,12,5,2,7,8,6,9,10)
print(a.index(max(a)))
如果范围2到14是指元组a中的值,而不是索引范围,那么这对我来说是有效的。它将打印第一次出现的索引

startindex, endindex = 2, 14
b = a[startindex : endindex]
print(b.index(max(b)) + startindex)
或者你可以在一行中完成

a = (3,4,11,12,5,2,7,8,6,9,10)
subsetTuple = tuple(item for item in a if item in range(2,14))
print(a.index(max(subsetTuple)))

在Python中,索引是至关重要的,您是否介意编辑代码块以使其具有适当的缩进(4)?我正在尝试将元组中最大元素的索引定位在特定范围(2-14)内。如果我的代码工作正常,c将是3(索引12)@user3454234是的,但您的代码不能正常工作,我解释了原因,因为这是您的问题:-)2-14范围如何?更好的方法是使用
enumerate
获取索引,而不必重复集合两次,例如
index,value=max(enumerate(a),key=lambda-pair:pair[1])
a = (3,4,11,12,5,2,7,8,6,9,10)
print( max( enumerate(a), key = lambda pair: pair[1] if pair[1] in range( 2, 14) else False )[0] )