-3

我只是好奇字符串是否被视为列表。

4

4 回答 4

4

字符串和列表都是序列,所以for循环可以遍历它们,但它们绝对是两种不同的类型。

for c in 'abcd':
    print c

for i in [1,2,3,4]:
    print i
于 2013-08-16T01:17:22.463 回答
3

字符串是列表,就像猫是棉花糖一样。它们在很多方面都很相似——你可以抚摸它们,它们都很柔软,它们对你来说真的很甜蜜,它们会把你的地板弄得一团糟。

你可以吃棉花糖,但如果你想吃猫,它会在你脸上抛出一个严重的、血腥的错误。

字符串和列表也是如此。你可以对它们做许多相同的事情,因为它们都是序列,但有些事情你应该只用字符串做,有些事情只用列表做。

于 2013-08-16T01:26:03.090 回答
2

在几乎所有语言中,字符串确实是字符列表,所以是的,从这个意义上说,字符串就是列表。但是,字符串是它们自己的实体。它们有自己的方法,并不是所有的列表方法都可以用于字符串。但是,有重叠。您可以像列表一样对字符串进行切片、迭代和连接,甚至可以使用一些列表方法(即lenindex)。然而,最大的不同是Python 中的字符串是不可变的。有了一个列表,你就可以做到my_list[5] = "a"。如果您使用字符串尝试此操作,您将收到一个TypeError.

编辑:

正如另一个答案的评论中提到的那样,不变性可能不是最大的区别(这是一个见仁见智的问题),但我在其他任何地方都没有提到的事实是列表可以是多维的。虽然你可以很容易地拥有一个二维、三维甚至四维列表,但字符串不可能实现这样的事情(尽管可以说my_list = ["foo", "bar"]可以看作是多维的,因为你可以调用my_list[1][2],它不仅仅是一个字符串,它是字符串的组合和列表)。如果有人可以像您一样制作“字符串列表”,我会留下深刻的印象。

于 2013-08-16T01:21:19.433 回答
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}
于 2013-08-16T01:22:40.560 回答