Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
何时以及为什么在python中使用[:]_Python_Syntax - Fatal编程技术网

何时以及为什么在python中使用[:]

何时以及为什么在python中使用[:],python,syntax,Python,Syntax,两个输出相同的内容,即Hello 那么,何时以及为什么使用/不使用[:] 谢谢!:) 将Hello作为输出的原因是没有传递任何参数 sentence = "Hello" print sentence print sentence[:] 这里是变量L,它包含Hello。开始表示字符串的初始位置,停止表示字符串结束的位置&step表示要跳过多少个字符 有关此主题的更多信息,请访问 请参阅,如果这解决了您的问题。正如评论中所指出的,已经有了一个解决方案。正如在对该问题的回答中所述,没有起始值和结束值

两个输出相同的内容,即
Hello

那么,何时以及为什么使用/不使用
[:]


谢谢!:)

将Hello作为输出的原因是没有传递任何参数

sentence = "Hello"
print sentence
print sentence[:]
这里是变量L,它包含Hello。开始表示字符串的初始位置,停止表示字符串结束的位置&step表示要跳过多少个字符

有关此主题的更多信息,请访问

请参阅,如果这解决了您的问题。

正如评论中所指出的,已经有了一个解决方案。正如在对该问题的回答中所述,没有起始值和结束值的切片(
[:]
)基本上创建了原始序列的副本

但是,您遇到了一个特殊情况。因为字符串是不可变的,所以创建字符串的副本毫无意义。由于无法修改字符串的任何实例,因此内存中不需要有多个实例。因此,基本上,使用
s[:]
(作为
s
字符串)并不是创建字符串的副本;该语句返回的字符串与
s
引用的字符串完全相同。查看这一点的简单方法是使用
id()
(对象标识)函数:

L[start:stop:step]
身份不同。但是,对于字符串:

>>> l1 = [1, 2, 3]
>>> l2 = l1[:]
>>> id(l1)
3075103852L
>>> id(l2)
3072580172L
身份是相同的,这意味着两者都是同一个确切的对象

>>> s1 = "Hello"
>>> s2 = s1[:]
>>> id(s1)
3072585984L
>>> id(s2)
3072585984L
当您要制作数组的深度副本时

>>> a = [1, 2, 3]
>>> b=a[:]
>>> id(b)
4387312200
>>> id(a)
4387379464
但由于string是不可变的,string[:]与string本身没有区别


另外,我看到大多数回答这个问题的人根本不明白问题是什么。

在这里获取相关信息:你方没有做出任何努力,似乎你甚至没有研究它的作用。@UlrichEckhardt我真的很抱歉。。。但这是我在stackoverflow的第一篇帖子。。。我不知道它叫切片符号,我在谷歌搜索中搜索[:]时遇到了问题这将创建列表的浅拷贝,而不是深拷贝。您可以通过注意
a=[[]]
来确认这一点;b=a[:];a[0]是b[0]`为真。要进行真正的深度复制,请使用
copy.deepcopy
]()。。。。不,不,他们没有<代码>a=[];b=[];a为b为假。相反,您可以将任何需要的内容放入内部列表,并得到相同的结果-
mylist[:]
不会复制列表中的任何对象。试试
a=[['a','b','c','d'];b=a[:];打印(a[0]是b[0]);a[0]。追加('e');打印(b[0])
>>> a='123'
>>> b=a[:]
>>> id(a)
4387372528
>>> id(b)
4387372528