Python中“”和“[]之间的区别

时间:2018-06-18 17:36:31

标签: python string python-3.x list

我编写了一个简单的程序来反转一个字符串,但是当我写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

2 个答案:

答案 0 :(得分:5)

ScriptUI.d.ts实例化一个空列表。当您使用a = []运算符添加到列表时,您正在执行列表扩展。换句话说,您将通过额外字符扩展列表。请注意,由于您一次添加一个字符,因此它与+具有相同的效果

list.append实例化一个空字符串。当您使用a = ''运算符添加到字符串时,您正在执行字符串连接

因此结果会有所不同。第一个会给你一个带有反转元素的+对象。第二个会给你一个list对象,字符颠倒。

答案 1 :(得分:1)

@avik ,请勿这样做。您可以使用以下方法来反转字符串。

  

[]表示空列表,""表示空字符串。

     
      
  1. 在第一种情况下,您使用a从列表a += text[i]添加字符串的每个字符。所以你得到了一个字符列表。在返回' '.join(a)之前,您可以使用a获取反向字符串。

  2.   
  3. 在第二种情况下,你是从一端连接字符串的每个字符,所以你有一个反向的字符串。

  4.         

    反向字符串

         

    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'
>>>