如何在 python 中比较两个包含字符串的列表?

问题描述 投票:0回答:4

我有这两个列表:

list1 = ['M', 'AR0', 'I', 'K', 'Y']
list2 = ['M', 'AR0', 'IY', 'K', 'U']

我想要当相同位置的两个元素相等时输出“Yes”,当相同位置的两个元素不相等时输出“No”。我只想使用 for 循环来执行此操作,因为我需要运行我的代码的字符串比这些长。

这是我到目前为止的代码,但是当我运行它时,它给了我这个错误

TypeError: list indices must be integers or slices, not str
.

那么,我如何遍历每个元素并检查它们是否彼此相等,然后打印我想要的内容?

for i in list1:
  if list1[i] == list2[i]:
     print("Yes")
  else:
     print("No")

比如上面两个列表,第二个和第四个位置的元素不相等

python list string-comparison
4个回答
1
投票

您可以使用

zip

for i, j in zip(list1, list2):
    if i == j:
        print('Yes')
    else:
        print('No')

输出:

Yes
Yes
No
Yes
No

0
投票

我会在这里使用

zip()
以及列表理解:

list1 = ['M', 'AR0', 'I', 'K', 'Y']
list2 = ['M', 'AR0', 'IY', 'K', 'U']
z = ["Yes" if x[0] == x[1] else "No" for x in zip(list1, list2)]
print(z)  # ['Yes', 'Yes', 'No', 'Yes', 'No']

0
投票

你有 4 种方法做到这一点

你的方法

for i in range(len(list1)):
    if list1[i] == list2[i]:
        print('yes')
    else:
        print('no')

使用列表理解

li = ['yes' if list1[i] == list2[i] else 'no' for i in range(len(list1))]

使用压缩功能

li = ['yes' if x == y else 'no' for x, y in zip(list1, list2)]

使用地图功能

li = list(map(lambda x, y: 'yes' if x == y else 'no', list1, list2))

0
投票

您也可以使用

set.intersection

list1 = ['M', 'AR0', 'I', 'K', 'Y']
list2 = ['M', 'AR0', 'IY', 'K', 'U']
intersection = set(list1).intersection(set(list2))
[print('Yes') if _ in intersection else print('No') for _ in list1]
© www.soinside.com 2019 - 2024. All rights reserved.