提问人:user15346274 提问时间:11/27/2022 最后编辑:user15346274 更新时间:12/1/2022 访问量:1259
检查两个列表在同一索引处是否具有相同的值,如果是,则返回索引。如果不是,则返回 -1
Check to see if two lists have the same value at the same index, if so return the index. If not return -1
问:
所以基本上我试图比较两个列表,看看它们在任何时候是否在同一索引下保持相同的值。如果他们这样做,我返回索引,如果他们不这样做,我返回 -1。
当我第一次将其作为测试时,我没有遇到任何问题,但是添加文本使它变得更加困难,我的主要问题是 if else 语句。我似乎只能让一条消息起作用,要么是,要么是否,不能根据情况同时进行。
答:
0赞
ep742
11/27/2022
#1
我认为一个更简洁的答案使用内置和函数:enumerate
zip
Dlist = [17,13,10,6,2]
Ilist = [5,9,10,15,18]
def seqsearch(DS,IS):
for idx, (d, s) in enumerate(zip(DS, IS)):
if d == s:
return f"Yes! Found at index = {idx}"
return "No!\n-1"
print(seqsearch(Dlist,Ilist))
目前尚不清楚是要只返回第一个索引,还是要返回所有具有匹配元素的索引。无论哪种情况,最好只返回所需的值,然后在函数范围之外添加任何格式和打印语句。
评论
0赞
Martijn Pieters
11/27/2022
任务是返回索引 或 ,而不是字符串。让函数返回机器可读信息,仅在任务完成后打印。然后,该功能也可以用于其他目的。-1
1赞
Martijn Pieters
11/27/2022
最好使用 和 ,然后使用 和 使用 语句来打印人类可读的内容。return idx
return -1
index = seqsearch(...)
if
0赞
ep742
11/27/2022
是的,我同意,我只是保持 OP 的返回输出相同
0赞
PythonForEver
11/27/2022
#2
您可以像这样遍历两个列表:
Dlist = [17, 13, 10, 6, 2]
Ilist = [5, 9, 10, 15, 18]
def seqsearch(DS, IS):
for index_1, element_1 in enumerate(DS):
for index_2, element_2 in enumerate(IS):
if (element_1 == element_2) and (index_1 == index_2):
print(f"Yes! Found at index ={index_1}")
return index_1
print("No!")
return -1
print(seqsearch(Dlist, Ilist))
但是,您可以进行更多改进。 确实是一个更好的选择,但理解起来稍微复杂一些。zip()
另外,请注意,这与 .你没有回来;你正在打印它。return
print
-1
-1赞
ali
11/27/2022
#3
我尝试使用您的代码来更好地使用 undrestand(但根据您的使用,我们有很多选择)
Dlist = [17, 13, 10, 6, 2]
Ilist = [5, 9, 10, 15, 18]
def seqsearch_with_print(DS, IS):
"""this function only print not return!!!
if you use return your function ended!"""
for i in range(len(DS) - 1):
if DS[i] == IS[i]:
print(f"Yes! Found at index {i}")
else:
print(f"No not equal in {i} index")
def seqsearch_with_list(DS, IS):
"""this function save history of (equal index or not: as 1, -1)"""
temp_list = []
for i in range(len(DS) - 1):
if DS[i] == IS[i]:
temp_list.append(1)
else:
temp_list.append(-1)
return temp_list
def seqsearch_with_list_dict(DS, IS):
"""this function save history of (equal index or not: as 1, -1)
as key, value (key== index, value==list item)"""
temp_list = []
for i in range(len(DS) - 1):
if DS[i] == IS[i]:
temp_list.append({i: 1})
else:
temp_list.append({i: -1})
return temp_list
# no need print(in function we used print)
seqsearch_with_print(Dlist, Ilist)
"""
return of function:
No not equal in 0 index
No not equal in 1 index
Yes! Found at index 2
No not equal in 3 index"""
# save history of search index in list
print(seqsearch_with_list(Dlist, Ilist))
"""
return of function with print:
[-1, -1, 1, -1]
"""
# save history as dict key value
print(seqsearch_with_list_dict(Dlist, Ilist))
"""
return of function with print
[{0: -1}, {1: -1}, {2: 1}, {3: -1}]
"""
下一个:比较词典列表/嵌套词典的词典
评论
No
found = True
if found == True
if found
if found == True
if
return
-1