sentence = "Hello"
print sentence
print sentence[:]
两者输出相同的东西,即Hello
那么,何时以及为什么使用/不使用 [:]
?
谢谢! :)
最佳答案
作为 Nobi在评论中指出,已经有一个 question regarding Python's slicing notation .如该问题的答案所述,没有开始和结束值 ([:]
) 的切片基本上会创建原始序列的副本。
但是,您遇到了字符串的特殊情况。由于字符串是不可变的,因此创建字符串的副本是没有意义的。由于您将无法修改字符串的任何实例,因此无需在内存中拥有多个实例。所以,基本上,使用 s[:]
(作为 s
一个字符串)你并没有创建字符串的副本;该语句返回的字符串与 s
引用的字符串完全相同。一个简单的方法是使用 id()
(对象标识)函数:
>>> l1 = [1, 2, 3]
>>> l2 = l1[:]
>>> id(l1)
3075103852L
>>> id(l2)
3072580172L
身份不同。但是,使用字符串:
>>> s1 = "Hello"
>>> s2 = s1[:]
>>> id(s1)
3072585984L
>>> id(s2)
3072585984L
身份相同,意味着两者都是同一个确切的对象。
关于python - 何时以及为何使用 [:] in python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28404340/