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)