bufferpython中有一个类型,但我不知道如何使用它.
在Python文档中,描述是:
buffer(object[, offset[, size]])object参数必须是支持缓冲区调用接口的对象(如字符串,数组和缓冲区).将创建一个引用object参数的新缓冲区对象.缓冲区对象将是从对象的开头(或从指定的偏移量)开始的切片.切片将延伸到对象的末尾(或者具有由size参数给出的长度).
如果我在python中有一个列表,我如何创建对列表的一部分的引用?例如:
myList = ["*", "*", "*", "*", "*", "*", "*", "*", "*"]
listPart = myList[0:7:3] #This makes a new list, which is not what I want
myList[0] = "1"
listPart[0]
"1"
Run Code Online (Sandbox Code Playgroud)
这是可能的,如果是这样,我将如何编码?
干杯,乔
可能吗?显然x[1:-1].sort()不起作用,因为切片是副本.
目前的解决方法:
>>> x = [4, 3, 1, 2, 5]
>>> s = slice(1, -1)
>>> x[s] = sorted(x[s])
>>> x
[4, 1, 2, 3, 5]
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式获取python列表上的视图吗?
有没有办法在Python 3中创建一个序列的"切片视图",其行为类似于常规切片但不创建序列切片部分的副本?更新原始序列时,"切片视图"应反映更新.
>>> l = list(range(100))
>>> s = Slice(l, 1, 50, 3) # Should behave like l[1:50:3]
>>> s[1]
4
>>> l[4] = 'foo'
>>> s[1] # Should reflect the updated value
'foo'
Run Code Online (Sandbox Code Playgroud)
我可以编写我自己的Slice类,但我想知道是否有内置方式.
所以,我注意到调用array[:-1]将克隆数组.
假设我有一个包含3000个元素的大型数组.当我迭代它时,我不希望它被克隆!我只想迭代到最后一个.
for item in array[ :-1 ] :
# do something with the item
Run Code Online (Sandbox Code Playgroud)
所以我必须诉诸一个反变量,
for c in range( 0, len( array ) - 1 ) :
# do something with array[ c ]
Run Code Online (Sandbox Code Playgroud)
或者有没有办法使/ array[:-1]语法有效?
我需要检查Python列表是否包含两个相等的一半.例如,此列表可以:
[6, 2, 0, 2, 3, 2, 6, 2, 0, 2, 3, 2]
Run Code Online (Sandbox Code Playgroud)
而这不是
[6, 2, 0, 2, 4, 6]
Run Code Online (Sandbox Code Playgroud)
我试过这个检查:len(lst) % 2 == 0 and lst[:len(lst)//2] == lst[len(lst)//2:]但是对于更大的列表来说似乎太慢了.还有其他方法吗?
python ×6
list ×4
python-3.x ×2
slice ×2
equality ×1
performance ×1
python-2.7 ×1
sorting ×1
view ×1