Python 两个列表中的相同单词

Python 两个列表中的相同单词,python,python-3.x,Python,Python 3.x,输出为: fruit = ['apple', 'pear', 'peach', 'orange'] fruit1 = ['pear', 'orange', 'banana', 'grapes'] same = [] for f in fruit: for ff in fruit1: if f == ff: same += f print(same) 我试图看看这些词是否相同,并将它们添加到“相同”列表中。 什么是正确的代码?如果列表的长度相同

输出为:

fruit = ['apple', 'pear', 'peach', 'orange']
fruit1 = ['pear', 'orange', 'banana', 'grapes']
same = []

for f in fruit:
    for ff in fruit1:
        if f == ff:
            same += f
print(same) 
我试图看看这些词是否相同,并将它们添加到“相同”列表中。
什么是正确的代码?

如果列表的长度相同,您可以在一个列表上循环,比较每个列表的元素,并将它们附加到相同的
列表中

当添加到列表中时,使用
.append()
也很重要,因为您现在使用的是
+=
,就像注释中提到的那样使用
.extend

水果=['苹果'、'梨'、'桃'、'橙']
水果1=[‘梨’、‘橙’、‘香蕉’、‘葡萄’]
相同=[]
对于水果中的f:
如果f在结果1中:
相同。追加(f)
打印(相同)
输出:
你可以像这样使用简单的列表理解

for f in fruit
    if f in fruit1:
        same.append(f)
print(same)
您还可以在Python中使用名为
set
的数据结构,如果您知道
set
,它允许您获得交集

same_fruits = [frt for frt in fruit if frt in fruit1]
更新(代码中的问题)

您的代码无法工作,因为,
str
类型本身在Python中是一个
iterable
。因此,当您将
+
操作符与
list
apple
orange
一起使用时,Python尝试
扩展
而不是使用
append
方法。您还可以在代码中做一些小的更改,以确保
str
作为一个整体附加,而不是通过专门使用
append
方法将其作为单个组件处理。使用
append
方法,而不是使用另一个
iterable
扩展
iterable
+
运算符

fruit = set(['apple', 'pear', 'peach', 'orange'])
fruit1 = set(['pear', 'orange', 'banana', 'grapes'])
same_fruits = fruit.intersection(fruit1)

这可以通过列表理解来完成:

fruit = ['apple', 'pear', 'peach', 'orange']
fruit1 = ['pear', 'orange', 'banana', 'grapes']
same = []

for f in fruit:
    for ff in fruit1:
        if f == ff:
            same.append(f)
print(same) 
以下代码中存在逻辑错误:

fruit = ['apple', 'pear', 'peach', 'orange']
fruit1 = ['pear', 'orange', 'banana', 'grapes']
same = [f for f in fruit if f in fruit1]
if语句中的问题
和水果中的f
是不正确和多余的,因为for是在水果项目上运行的,所以f是水果中的一个项目,这是肯定的。你怎么修好的?忽略这个问题

for f in fruit:
    if f in fruit1 and f in fruit:
        same.append(f) 

为了你的理解。有几个列表操作,如append()、extend()、remove()等


我相信你要找的是:

for f1 in fruit:
    for f2 in fruit1:
        if f1==f2:
            same.append(f1)
print(same)
更好的办法是:

fruit = ['apple', 'pear', 'peach', 'orange']
fruit1 = ['pear', 'orange', 'banana', 'grapes']
same = []

for f in fruit:
    for ff in fruit1:
        if f == ff:
            same.append(f)
print(same)

因为这要干净得多

请尝试下面的一行代码

fruit = ['apple', 'pear', 'peach', 'orange']
fruit1 = ['pear', 'orange', 'banana', 'grapes']
same = []

for f in fruit:
    if f in fruit1:
        same.append(f)

print(same)

['orange','pear']

使用
相同。附加(f)
而不是
+=
问题不在于你的算法;在
相同的
列表中出现单个字母的原因是
+=
对列表使用
.extend
,而不是
.append
。您不必检查水果中的f,因为它已经在该列表中进行了迭代list@Spounka对不起,我没意识到!将更新我的解决方案谢谢!由于您有超过15个代表,我建议您使用“标志”按钮关闭重复的问题。
str
类型本身就是一个
列表
?这两种方法都是不可接受的…这实际上是最没有效率的方法。。。
for f1 in fruit:
    for f2 in fruit1:
        if f1==f2:
            same.append(f1)
print(same)
fruit = ['apple', 'pear', 'peach', 'orange']
fruit1 = ['pear', 'orange', 'banana', 'grapes']
same = []

for f in fruit:
    for ff in fruit1:
        if f == ff:
            same.append(f)
print(same)
fruit = ['apple', 'pear', 'peach', 'orange']
fruit1 = ['pear', 'orange', 'banana', 'grapes']
same = []

for f in fruit:
    if f in fruit1:
        same.append(f)

print(same)
same = list(set(fruit).intersection(set(fruit1)))
print(same)