我只是好奇字符串是否被视为列表。
答案 0 :(得分:4)
字符串和列表都是序列,因此for
循环可以迭代它们,但它们肯定是两种不同的类型。
for c in 'abcd':
print c
for i in [1,2,3,4]:
print i
答案 1 :(得分:3)
字符串就像猫是棉花糖一样。它们在很多方面都很相似 - 你可以宠爱它们,它们都很柔软,它们对你来说真的很甜蜜,而且它们会弄乱你的地板。
你可以吃一个棉花糖,但如果你想吃一只猫,它会在你的脸上留下一个巨大的,血腥的错误。
所以它是字符串和列表。你可以对它们做很多相同的事情,因为它们都是序列,但有些事情你应该只对字符串做,有些事情只有列表。
答案 2 :(得分:2)
在几乎所有语言中,字符串确实是字符列表,所以是的,从这个意义上说,字符串是列表。但是,字符串是它们自己的实体。它们有自己的方法,并不是所有的list方法都可以用在字符串上。但是,存在重叠。您可以对字符串进行切片,迭代和连接,就像它们是列表一样,甚至可以使用一些列表方法(即len
和index
)。但是,最大的区别是 Python中的字符串不可变。使用列表,您可以my_list[5] = "a"
。如果您使用字符串尝试此操作,则会收到TypeError
。
修改强>
正如另一个答案的评论中所提到的,不变性可能不是最大的差异(这是一个意见问题),但我在其他任何地方都没有看到的是列表这一事实可以是多维的。虽然你可以很容易地得到两个,三个甚至四维的列表,但字符串是不可能的(虽然可以说my_list = ["foo", "bar"]
可以看作多维,因为你可以调用my_list[1][2]
,但它不是只是一个字符串,它是字符串和列表的组合)。如果有人可以制作一个“String Of Strings”,就像你可以制作一个“列表列表”,我会深感印象。
答案 3 :(得分: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}