目前在我的课程中学习python,我在这方面有点困惑,不幸的是我的下一个实践直到下周,所以我想我会在这里问。
我们应该编写一个名为find()的函数,它接受一个列表,搜索列表中的值并返回列表中找到该数字的位置的新列表。例如:
list = 2, 3, 7, 2, 3, 3, 5
number = 3
输出结果为:0, 4, 5
这个问题要求我们使用循环,但不要使用内置函数,切片表达式,列表方法或字符串方法,除非指定,只有为此部分指定的是:.append()
和{{ 1}}。
我们已经提供了一个我们不允许编辑的文件:
range()
根据我在名为test_lists的文件中尝试的内容,输出结果为import test_lists
list_A = ['q', 'w', 'e', 'r', 't', 'y']
print(test_lists.find(list_A, 'r'))
print(test_lists.find(list_A, 'b'))
:
<function find at 0x0000000003B89D90>
任何人都能够把我推向正确的方向并向我解释一下吗?我们被告知我们可以使用def find(list1, listValue):
findList = 0
for x in range(findList):
findList.find(list1, value)
return find
,但我似乎并不了解这种情况如何适应这种情况,因为我知道附加只会增加字符串。我觉得我离赛道很远。
由于
答案 0 :(得分:2)
使用enumerate
和list comprehension:
>>> lst = 2, 3, 7, 2, 3, 3, 5
>>> number = 3
>>> [i for i, x in enumerate(lst) if x == number]
[1, 4, 5]
>>> list_A = ['q', 'w', 'e', 'r', 't', 'y']
>>> [i for i, x in enumerate(list_A) if x == 'r']
[3]
顺便说一句,不要使用list
作为变量名。它影响内置类型/函数list
。
<强>更新强>
不使用enumerate
:
>>> lst = 2, 3, 7, 2, 3, 3, 5
>>> number = 3
>>> [i for i in range(len(lst)) if lst[i] == number]
[1, 4, 5]
答案 1 :(得分:1)
这会吗?
def find(list1, listValue):
found = []
for index in range(0,len(list1)):
if list1[index]==listValue:
found.append(index)
return found
答案 2 :(得分:0)
我猜你不能使用enumerate
?
然后,你必须自己做同样的事情:迭代列表的索引和每个索引,看看元素是否是预期的元素。如果是,您的结果列表中有索引:
expected_element = 3
my_list = [...]
result_list = []
for i in range(len(my_list)):
if my_list[i] == expected_element:
result_list.append(i)
它不是非常pythonic但如果你有这么多的束缚,我觉得它很好
如果你不能使用len(my_list)
,你可以通过第一次迭代来获得大小:
def size(l):
s = 0
for _ in l:
s += 1
return s
答案 3 :(得分:0)
我认为falsetru给出的答案是最优雅的。
说到这一点,我不知道他的答案是否会帮助你当前技术水平的人使用python,更“广泛地,像程序员一样思考”。考虑使用以下步骤解决练习:答案 4 :(得分:0)
列表理解将是最恐怖的方式。但是为了教学目的明确地写它,这是另一种方法。
def find(number, numList):
indexMatches = [] # initialize your index array
for index in range(len(numList)): # iterate over the list of values
if number == numList[index]: # compare the number against the current value
indexMatches.append(index) # if they match, add it to the index array
return indexMatches # return the list of indexes where matches occured
find(3, [2,3,7,2,3,3,5])
输出
[1, 4, 5]