在 Python 中从另一个列表中的一个列表中查找元素

finding an element from one list in another list in python

提问人:D. Forrester 提问时间:3/30/2017 更新时间:2/14/2019 访问量:15948

问:

有没有办法让两个名为 list1 和 list2 的列表,并且能够查找一个条目在另一个条目中的位置。即

list_one = ["0", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

list_two = ["h","e","l","l","o"]

我的目标是允许用户输入一个单词,然后程序将该单词转换为一组与字母条目相对应的数字list_one

因此,如果用户输入了 hello,计算机将返回 85121215(即条目的位置)

有没有可能的方法可以做到这一点

Python list 元素

评论

0赞 Stefan Gruenwald 3/30/2017
您想如何处理 list1 中重复的字母?如果没有重复项,或者您只想使用第一次出现的位置,则可以使用字典。

答:

9赞 wim 3/30/2017 #1

查找项目在列表中的位置不是一个非常有效的操作。对于此类任务,字典是更好的数据结构。

>>> d = {k:v for v,k in enumerate(list_one)}
>>> print(*(d[k] for k in list_two))
8 5 12 12 15

如果你总是只是字母表,按字母顺序排列,那么使用内置函数 ord 让一些东西工作可能会更好、更简单。list_one

0赞 Eular 3/30/2017 #2

返回列表元素的位置x.index(i)ix

print("".join([str(list_one.index(i)) for i in list_two]))
85121215
0赞 Jan 3/30/2017 #3

在列表中使用:.index()

list_one = ["0", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

string = "hello"
positions = [list_one.index(c) for c in string]
print(positions)
# [8, 5, 12, 12, 15]
1赞 Dadep 3/30/2017 #4

你可以迭代认为列表:

>>> for i in range(len(list_two)):
...     for j in range(len(list_one)):
...             if list_two[i]==list_one[j]:
...                     list_3.append(j)
>>> list_3
[8, 5, 12, 12, 15]

但WIM的回答更优雅!

3赞 Simeon Aleksov 3/30/2017 #5

添加@wim的答案,可以通过简单的理解来完成。

>>> [list_one.index(x) for x in list_two]
[8, 5, 12, 12, 15]