2013-08-16 10 views

回答

2

在幾乎所有的語言中字符串確實是字符列表,所以是的,從這個意義上說,字符串是列表。但是,字符串是他們自己的實體。他們有自己的方法,並不是所有的列表方法都可以用在字符串上。但是,有重疊。您可以將字符串分割,迭代和連接,就好像它們是列表一樣,甚至可以使用一些列表方法(即,lenindex)。然而,最大的區別在於Python中的字符串不可變,。有了清單,你可以做my_list[5] = "a"。如果您使用字符串嘗試此操作,則會收到TypeError

編輯:

正如在另一個答案的評論提到,不變性可能不是最大差(這是見仁見智的問題),但有些事我沒有看到提到的其他地方是列表可以是多維的。雖然你可以很容易地有一個二維,三維甚至四維的列表,但類似的東西是不可能的字符串(儘管可以認爲my_list = ["foo", "bar"]可以看作多維的,因爲你可以調用my_list[1][2],它不是一個字符串,它是字符串和列表)。如果有人能夠製作「字符串字符串」,就像您可以列出「列表名單」一樣,我會對其印象深刻。

4

字符串和列表都是序列,因此for循環可以迭代它們,但它們肯定是兩種不同的類型。

for c in 'abcd': 
    print c 

for i in [1,2,3,4]: 
    print i 
+0

謝謝你的有用答案。 http://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange – agf

1

除了別人的說法。字符串不可變和可哈希:不能改變字符串,它們可以是字典中的鍵和集合的成員。列表是可變的,不可哈希,你可以改變列表,但它們不能是字典或集合成員中的鍵。

# Hashability 
>>> {['a', 'b'] : 1} # With lists: fails  
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unhashable type: 'list' 
>>> {'ab' : 1}  # With strings: works 
{'ab': 1} 
3

字符串列表就像一隻貓是棉花糖。它們在很多方面都很相似 - 你可以撫摸它們,它們都很柔軟,它們可以對你真正甜美,並且可以讓你的地板變得混亂。

你可以吃棉花糖,但如果你嘗試吃貓,它會在你的臉上發出一個尖銳的血腥的錯誤。

所以它是與字符串和列表。你可以對它們做很多相同的事情,因爲它們都是序列,但有些事情你只能用字符串做,而有些事情只能用列表。

+0

+1是唯一真正說出__hell的人不是,他們aren't__。他們是一些東西的序列,很好,但還有什麼?我看到有人說_hashable_或最大的區別。恕我直言,我們不能談論最大的區別_但最大的相似性。它們是兩種不同的東西,它們恰好包含了一系列的東西,但與東西相差甚遠。 –

+0

回想起來,我應該帶着一隻鴨子,順從鴨子打字。 – Brionius

相關問題