所以我有这个代码,它取一个未排序的列表和两个整数,然后搜索,看看列表中的值是否高于其中一个整数而且低于另一个,每次运行它我得到“'类型'对象不可订阅”这对我来说完全没有意义,因为我是初学者...请帮忙。
def unsortedSearch(list1, i, u):
found = False
pos = 0
pos2 = 0
while pos < len(list1) and not found:
if list[pos] < u :
if list[pos2] > i:
found = True
pos2 = pos2 + 1
pos = pos + 1
return found
unsortedList = ['1', '3', '4', '2', '6', '9', '2', '1', '3', '7']
num1 = '3'
num2 = '5'
isItThere = unsortedSearch(unsortedList, num1, num2)
if isItThere:
print ("There is a number between those values")
else:
print ("There isn't a number between those values")
答案 0 :(得分:0)
在函数Matcher m = Pattern.compile("(.*)<client>(.*)</client>(.*)").matcher("<client>12345abcde</client>");
m.matches();
String value = m.group(2);
中,您有一个名为unsortedSearch
的参数,但在函数体中,您将其称为list1
。因此,使用list
更改所有list
,您当前的问题将得到解决:
list1
答案 1 :(得分:0)
你使用list [] iso list1 []。 list是python中的一个类型,正如错误告诉你的那样,你不能订阅类型
接下来,你可以使用列表理解来使代码更具可读性
if [x for x in unsortedList if num1 < x < num2]:
print("There is a number between those values")
else:
print("There isn't a number between those values")
[] 之间的部分称为列表理解:基本上将返回每个if的列表,其中x在num1和num2之间。 因为Python中的空列表为false,(一起将为None,False,0和&#34;&#34;)您可以使用 if 快捷方式
答案 2 :(得分:0)
while pos < len(list1) and not found:
if list[pos] < u :
if list[pos2] > i:
found = True
pos2 = pos2 + 1
pos = pos + 1
在if条件中使用'list'而不是'list1'。
修改算法:如果我理解得很好,你在i和u之间的列表中寻找一个值。那你为什么要定义pos和pos2?
你想检查我是否&lt; list1 [pos]&lt;如果没有,那么请转到列表中的下一个项目。
这应该足以让你编写代码:)