【发布时间】:2018-04-16 15:02:42
【问题描述】:
我有 2 个列表和准备好的函数传递和打印。我可以分别用第二个列表的每个元素替换第一个列表的每个元素,但我不确定如何在一个函数中一起完成。我已经在 stackoverflow 上搜索了几个小时的答案,但是这里关于这个主题的所有 python 东西都太旧了,并且与 python 3.6 不兼容。我希望你能在不使用任何导入方法(例如 if/elif 或其他方法)的情况下给我一个提示。这是我目前所拥有的:
def goodbadString(string):
for (a,b) in zip(strings, expectedResults):
string = string.replace(strings[0],expectedResults[0])
return string
strings = ['It has been a good and bad day', 'bad company',
'good is as good does!', 'Clovis is a big city.']
expectedResults = ['I am confused', 'goodbye', 'hello',
'hello and goodbye']
for string, expectedResult in zip(strings, expectedResults):
print('Sample string = ', string)
print('Expected result =', expectedResult)
print('Actual result =', goodbadString(string))
print()
这是预期结果(虽然不是全部结果)
您可以看到我的函数确实为第一个“示例字符串”显示了正确的结果,但现在我应该继续处理其余元素(第二个示例“再见”的实际结果等等)。
【问题讨论】:
-
它不起作用,因为您只明确引用第一个元素 -
string.replace(strings[0],expectedResults[0]),所以无论您有多少数据,您总是使用每个列表中的第一个元素。我建议您停止在 Internet 上搜索答案,而是仔细考虑您的代码或使用调试器运行它,一步一步看看发生了什么。 -
@BorisSerebrov 是的,它明确适用于第一个元素,因为我没有完成其余部分。我试过了,它会给我其中一个元素,但不是全部。我不确定如何继续我的函数更正(语法)它将包含所有 3 个元素。
-
@BorisSerebrov 我特别喜欢你最后的建议。
-
@Rish 这是一个学习练习吗?我只是不确定在这里给出直接答案是否会帮助您实际学习一些东西。也许尝试在您的
goodbadString函数中使用a和b。您也可以尝试不使用for循环(您可以使用 list.index() 方法) -
@Rish 好的,所以你的 for 循环也适用于
string = string.replace(a, b),但strings.index更清晰,可能更快。
标签: python list function replace python-3.6