相关疑难解决方法(0)

有没有办法对字符串进行子串?

有没有办法在Python中对字符串进行子串,以获取从第3个字符到字符串末尾的新字符串?

也许喜欢myString[2:end]

如果离开第二部分意味着'直到结束',如果你离开第一部分,它是从一开始就开始的吗?

python string

1995
推荐指数
13
解决办法
273万
查看次数

python列表中的无限赋值?

我来过这个问题.码:

>>> values = [0, 1, 2]
>>> values[1] = values
>>> values
[0, [...], 2]
Run Code Online (Sandbox Code Playgroud)

我期望的结果是:

[0, [0, 1, 2], 2]
Run Code Online (Sandbox Code Playgroud)

这是python列表的无限分配吗?幕后的是什么?

谢谢.

python list infinite

5
推荐指数
1
解决办法
835
查看次数

赋值算子左/右侧的不同切片行为

作为来自C++背景的Python新手,Python(3.4.x)中的切片运算符对我来说看起来很荒谬.我只是没有得到"特殊规则"背后的设计理念.让我解释为什么我说它是"特殊的".

一方面,根据此处的Stack Overflow答案,切片运算符创建列表或列表的一部分(深度)副本,即新列表.链接可能是旧的(早于python 3.4.x),但我刚用python 3.4.2进行了以下简单实验确认了这种行为:

words = ['cat', 'window', 'defenestrate']
newList = words[:] # new objects are created; a.k.a. deep copy
newList[0] = 'dog'

print(words) # ['cat' ...
print(newList) # ['dog' ...
Run Code Online (Sandbox Code Playgroud)

另一方面,根据这里的官方文件:

Assignment to slices is also possible, and this can even change the size of the list or clear it entirely:
>>>

>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> …
Run Code Online (Sandbox Code Playgroud)

python operators deep-copy slice python-3.x

3
推荐指数
1
解决办法
662
查看次数

两个变量似乎指向同一个列表,即使它们应该是唯一的

我在程序中使用列表,但我不理解以下行为.我已经开始理解可变性以及它如何影响变量赋值,但我没有看到这里的问题:

class Test:
    def __init__(self, list_n):
        list_a = list_n[:]
        list_b = list_n[:]
        print(list_a is list_b) # Prints False
        print(list_a is list_n) # Prints False
        print(list_b is list_n) # Prints False

        list_a[0][0] = 1
        print(list_a) # Both of these print [[1,0,0][0,0,0][0,0,0]]
        print(list_b)

def main():
    list_n = [[0,0,0],[0,0,0],[0,0,0]]
    test = Test(list_n)      

if __name__ == '__main__': main()
Run Code Online (Sandbox Code Playgroud)

双方list_alist_b似乎仍指向同一个列表,即使我想我采取了必要的措施,以防止这种情况发生.

python

2
推荐指数
1
解决办法
240
查看次数

标签 统计

python ×4

deep-copy ×1

infinite ×1

list ×1

operators ×1

python-3.x ×1

slice ×1

string ×1