簡體   English   中英

應用算術運算符在python中列出元素

[英]Applying arithmetic operators to list elements in python

string="hi how are you"
s =string.split()
print(s)
for i in range(len(s)):
    print(s[i])
    s += s[i]
print(s)

我剛開始學習 python,我注意到一些奇怪的東西,這對我來說沒有意義。

所以當我做s += s[i]時我不應該得到這樣的東西['hi', 'how', 'are', 'you', 'hi', 'how', 'are', 'you']

但相反,我得到了這樣的東西: ['hi', 'how', 'are', 'you', 'h', 'i', 'h', 'o', 'w', 'a', 'r', 'e', 'y', 'o', 'u']

為什么要添加單個字母?

我知道我們可以使用 append 函數獲得這個['hi', 'how', 'are', 'you', 'hi', 'how', 'are', 'you']但不是+應該做同樣的事 ?

列表的+=運算符不會將元素附加到列表,而是連接兩個列表。 例如:

a = [1, 2, 3]
b = [2, 3, 4]
>>> a += b # will give you [1, 2, 3, 2, 3, 4]

現在,如果我們嘗試使用+運算符來附加元素,它將拋出異常

>>> a += 2
TypeError: 'int' object is not iterable

現在讓我們來看看你的情況。 該字符串被解釋為字符列表,這就是為什么您嘗試執行的操作被視為將列表與字符列表連接起來的原因。

>>> a = [] 
>>> a += "hello"
>>> a

['h', 'e', 'l', 'l', 'o']

實際上沒有,實際輸出很好,這就是為什么。

當您嘗試將“hi”添加到 ['hi', 'how', 'are', 'you'] 時,您是在嘗試將字符串添加到字符串列表中。 這應該是一個錯誤。 但實際上字符串已經是一個字符列表。 您正在做的是有效地將列表添加到列表中,因此 ['hi', 'how', 'are', 'you'] 與“Hi”中的每個字母組合在一起

您想要做的可以通過s.append(s[i])或通過s += [s[i]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM