假设 Python 代码本身:
x = "tyr"
y = 'red'
result = []
for i in range(len(x)):
result.append((''.join(x[1] + (' - ') + y[1])).split())
print(result)
[['y', '-', 'e'], ['y', '-', 'e'], ['y', '-', 'e']]
但是如果你删除空间:
result.append((''.join(x[1] + ('-') + y[1])).split())
[['y-e'], ['y-e'], ['y-e']]
为什么会发生这种情况以及如何获得结果 [['y - e'], ['y - e'], ['y - e']],但不是通过替换。
在我看来,在这种情况下,最好不要混淆
join()andsplit(),而只需将必要的数据包装在f-strings中- 这将更方便和更清晰:)PS你也忘了把
i它作为一个行索引,而是你写了1.UPD:如果我们谈论“为什么会发生这种情况?”这个问题,值得解析这个表达式:
''.join(x[1] + (' - ') + y[1])).split(). 其处理步骤如下:x[1] + (' - ') + y[1]。所有文字都是小写的,所以在这种情况下括号被删除;'x - y'空格,其中 x 和 y 是对应的字符串字符;join()什么都不做,因为它对字符串列表进行操作,但这里的字符串是实心的;split()另一方面,该函数根据传递给它的参数将字符串划分为字符串列表。默认情况下,这是一个空格,因此该函数将第 2 项中的字符串转换为由 3 个字符串组成的列表。当您删除空格时,您会得到 string
'x-y',并且不会join(),也split()不会对它做任何事情,因此字符串本身将保持不变。但我对问题中的短语感到困惑
但是,如果您像问题中一样需要它