我有这两个列表:
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")
比如上面两个列表,第二个和第四个位置的元素不相等
您可以使用
zip
:
for i, j in zip(list1, list2):
if i == j:
print('Yes')
else:
print('No')
输出:
Yes
Yes
No
Yes
No
我会在这里使用
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']
你有 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))
您也可以使用
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]