我编写了一个简单的程序来反转一个字符串,但是当我写a = ""
并写a = []
时,我得到了不同的结果。请有人帮我解释为什么会发生这种情况:
输入是:
"Argument goes here"
第一路
a= []
for i in range(( len(text)-1,-1,-1):
a+= text[i]
return a
输出为:['e', 'r', 'e', 'h', ' ', 's', 'e', 'o', 'g', ' ', 't', 'n', 'e', 'm', 'u', 'g', 'r', 'A']
第二路
a = ""
for i in range(1, len(text) + 1):
a += text[len(text) - i]
return a
输出为:ereh seog tnemugrA
答案 0 :(得分:5)
ScriptUI.d.ts
实例化一个空列表。当您使用a = []
运算符添加到列表时,您正在执行列表扩展。换句话说,您将通过额外字符扩展列表。请注意,由于您一次添加一个字符,因此它与+
具有相同的效果。
list.append
实例化一个空字符串。当您使用a = ''
运算符添加到字符串时,您正在执行字符串连接。
因此结果会有所不同。第一个会给你一个带有反转元素的+
对象。第二个会给你一个list
对象,字符颠倒。
答案 1 :(得分:1)
@avik ,请勿这样做。您可以使用以下方法来反转字符串。
[]
表示空列表,""
表示空字符串。
在第一种情况下,您使用
a
从列表a += text[i]
添加字符串的每个字符。所以你得到了一个字符列表。在返回' '.join(a)
之前,您可以使用a
获取反向字符串。- 醇>
在第二种情况下,你是从一端连接字符串的每个字符,所以你有一个反向的字符串。
反向字符串:
s =“参数在这里”
reversed_s =“”。join(list(reversed(s)))
>>> s = "Argument goes here"
>>>
>>> reversed(s)
<reversed object at 0x00000275F29B9F60>
>>> list(reversed(s))
['e', 'r', 'e', 'h', ' ', 's', 'e', 'o', 'g', ' ', 't', 'n', 'e', 'm', 'u', 'g', 'r', 'A']
>>>
>>> "".join(list(reversed(s)))
'ereh seog tnemugrA'
>>>