main_list = ['4', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
my_list = ['4', '5', '6']
我的问题是,如何在main_list中找到my_list的索引?
my_list中的整数必须在main_list中按顺序排列。
我尝试使用main_list.index(my_list[0])
,但如果有多个特定元素,则返回错误的索引号。我需要得到的结果是4,但是对于main_list.index(my_list[0])
,它只会给0作为索引。
如果需要澄清,我可以使用其他详细信息编辑帖子。对不起,英语不是我的第一语言。
答案 0 :(得分:2)
尝试这样的事情
for i in range(len(main_list)-len(my_list)):
if main_list[i:i+len(my_list)] == my_list:
index = i
break
这应适用于列表中可能存在的所有可能类型。
答案 1 :(得分:1)
您可以使用join()
function将两个列表转换为字符串,并迭代比较字符串以找到匹配项。
编辑:为多位数字做了两项工作。还添加了一个浮箱。
例如:
main_list = ['4', '1', '2', '3', '40.1', '52', '61', '7', '8', '9', '10']
my_list = ['40.1', '52', '61']
index = -1
for i in range(len(main_list)):
if '#'.join(main_list[i:i+len(my_list)]) == '#'.join(my_list):
index = i
break
print(index)
答案 2 :(得分:0)
如果您需要算法解决方案:
def Find(haystack, needle):
n, h = len(needle), len(haystack)
assert n <= h
for i in range(h):
if h - i <= n: break
count = 0
for i_, j in zip(range(i, i + n), range(n)):
if haystack[i_] == needle[j]:
count += 1
if count == n: return i
return -1
答案 3 :(得分:0)
更有效的一个班轮:
print ','.join(main_list).find(','.join(my_list)) - ''.join(main_list).find(''.join(my_list))
将它们转换为字符串,其中的元素用逗号分隔,找到匹配项,然后减去当逗号不存在时发现的事件,并得到答案。