返回顶部

Python 3 中的切片返回它们正在切片的任何内容的浅拷贝,而不是视图。为什么仍然如此?即使撇开观点numpy的的使用,而不是切片的副本,事实证明dict.keys,dict.values和dict.items在Python 3所有回报的意见,并有走向更大的使用迭代器面向Python 3中的其他许多方面,使它看起来将会有些是切片变得相似的运动。itertools确实有一个islice制作迭代切片的功能,但它比普通切片更受限制,并且不提供沿着dict.keys或线的视图功能dict.values。 同样,您可以对切片使用赋值来修改原始列表,但切片本身是副本而不是视图,这一事实是该语言的一个矛盾方面,并且似乎违反了Python Zen of Python 中说明的几个原则。 也就是说,你可以做到的事实 >>> a = [1, 2, 3, 4, 5] >>> a[::2] = [0, 0, 0] >>> a [0, 2, 0, 4, 0] 但不是 >>> a = [1, 2, 3, 4, 5] >>> a[::2][0] = 0 >>> a [0, 2, 3, 4, 5] 或类似的东西 >>> a = [1, 2, 3, 4, 5] >>> b = a[::2] >>> b view(a[::2] -> [1, 3, 5]) # numpy doesn't explicitly state that its slices are views, but it would probably be a good idea to do it in some way for regular Python >>> b[0] = 0 >>> b view(a[::2] -> [0, 3, 5]) >>> a [0, 2, 3, 4, 5] 似乎有些武断/不可取。 我知道http://www.python.org/dev/peps/pep-3099/以及它说“切片和扩展切片不会消失(即使API__getslice__和__setslice__API 可能被替换)也不会消失”的部分他们会返回标准对象类型的视图吗?”,但链接的讨论没有提到为什么做出关于视图切片的决定;事实上,在原始帖子中列出的建议中,对该特定建议的大多数评论似乎都是积极的。 是什么阻止了这样的事情在 Py

如何循环遍历字符串?

正在加载...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152