【发布时间】:2017-10-29 05:51:11
【问题描述】:
我有两个相互关联的函数 - 第一个删除相同且位于相同位置的字符,并返回不匹配的字符:
def remove(l1, l2):
r = []
for char in range(len(l1)):
if l1[char] != l2[char]:
r.append(l1[char])
return r
虽然此函数遍历两个列表,并使用前一个函数删除相同的值。然后使用剩下的,它会在 b 中找到相同的值(但它们不需要位于相同的位置)。
def search(a, b):
found = []
elim = remove(a, b)
for char in elim:
if char in b:
find = 'y'
found.append(find)
return found
虽然我能够为我使用的其他示例返回正确数量的 'y',但当我有多个相同的值时它会中断。如果列表“b”中只有 1 个“V”,但列表“a”中有 2 个,我只希望为它返回 1 个“y”,而不是 2。由于我不确定从这里去哪里,我的函数返回:
search(['L', 'F', 'V', 'V'], ['V', 'F', 'O', 'R'])
Expected:
['y']
Got:
['y', 'y']
提前致谢!
【问题讨论】:
-
在
remove()中,您将整数添加到列表中,而不是字符。 -
@Mr.bug 会将其变成不可见的 ascii 字符。
-
r.append(char)这是错误的,这将给出 char 而不是 char 的索引,你必须使用r.append(l1[char]) -
这里有你想要实现的算法吗?
-
您的问题有问题。您声称看到的输出实际上不能来自您提供的代码。函数
remove填充一个包含整数的列表,并返回它。函数search将此列表命名为elim,然后逐步查看它的任何元素是否在b中。它们都不是,因为b包含字符串而不是整数。search唯一可能的返回值是 []。
标签: python python-3.x list function