Python3错误:TypeError:列表索引必须是整数或切片,而不是列表 def索引(列表): i=[] 如果len(list_nums)==0: 返回-1 对于范围内的i(len(list_nums[i]-1)): 如果我[i]
尝试编写一个通用函数,返回给定列表中最小数字的索引,或者如果列表为空,则返回-1,但我收到一个错误,该错误指出:TypeError:列表索引必须是整数或片,而不是列表 我知道有更简单的方法,包括使用min方法,但我想使用for循环方法来实现这一点Python3错误:TypeError:列表索引必须是整数或切片,而不是列表 def索引(列表): i=[] 如果len(list_nums)==0: 返回-1 对于范围内的i(len(list_nums[i]-1)): 如果我[i],list,python-3.x,for-loop,List,Python 3.x,For Loop,尝试编写一个通用函数,返回给定列表中最小数字的索引,或者如果列表为空,则返回-1,但我收到一个错误,该错误指出:TypeError:列表索引必须是整数或片,而不是列表 我知道有更简单的方法,包括使用min方法,但我想使用for循环方法来实现这一点 任何指导都会有帮助一个更简单的解决方案是使用列表对象的.index()方法 def index_of_smallest(list_nums): i = [] if len(list_nums) == 0: return -1
任何指导都会有帮助一个更简单的解决方案是使用
列表
对象的.index()
方法
def index_of_smallest(list_nums):
i = []
if len(list_nums) == 0:
return -1
for i in range(len(list_nums[i] - 1)):
if i[i] < i[i+1]:
smallest = i[i]
return smallest
用法:
def index_of_smallest(list_nums):
if not(list_nums):
return -1
else:
return list_nums.index(min(list_nums))
其他意见
您的错误是由于命名空间管理不善造成的。通常,您应该避免使用非描述性变量,例如i
,因为它们不能帮助我们理解代码,而且很容易被意外误用
在…范围(len(list_nums[i]…
中,您正在为列表编制索引,list_nums
与另一个list
,这会引发TypeError
。不确定您试图在那里做什么对不起
在下面,您将使用i[i]
,如果它有效的话,这将非常令人困惑。尽管如此,对迭代器使用单字符变量是常见的,但仅对那些使用范围非常狭窄的循环或列表理解的人而言
参见一个更简单的解决方案可能是:
>> index_of_smallest( [1,2,3,0,5,9] )
# 3
>> index_of_smallest( [] )
# -1
它的作用:如果列表为空,则返回-1(其他部分),否则它将在给定列表中找到最小值(min(list_nums)),然后在列表中找到最小元素的索引(list_nums.index(min(list_nums)))1。您不需要带If的括号。2.您可以将代码缩短为返回int(bool(list_nums))和list_nums.index(min(list_nums))
你可以查找它的作用。3.我更喜欢从操作符import itemgetter;print(min(enumerate([1,2,3]),key=itemgetter(1))[0])
中找到,这实际上是numpy的argmin
功能。真诚地说,你曾经“炫耀”过的PESIT的小朋友你薄弱的python技能。哦,你的缩进是错误的。我对你的答案投了反对票,因为它会抛出一个语法错误。
def index_of_smallest(list_nums):
if(list_nums):
return list_nums.index(min(list_nums))
else:
return -1