python 列表切片可以修改吗_python在函数中修改列表切片

如果对列表进行切片,则只能修改一个副本,因此您要执行的操作无法按照您想要的形式进行.

但是您可以将一个可选的slice对象传递给func1,如果不是None,则使用它来执行slice分配(否则使用[:])

我将执行以下操作(使用lambda避免公式的复制/粘贴和生成器表达式,以避免创建无用的临时列表:

def func1(a,the_slice=None):

e = lambda y : (x**2 for x in y)

if the_slice:

a[the_slice] = e(a[the_slice])

else:

a[:] = e(a)

测试:

a = list(range(10))

func1(a)

print(a)

a = list(range(10))

func1(a,slice(5)) # stop at 5

print(a)

a = list(range(10))

func1(a,slice(5,len(a),2)) # start at 5 / stop at the end, stride/step 2

print(a)

结果:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

[0, 1, 4, 9, 16, 5, 6, 7, 8, 9]

[0, 1, 2, 3, 4, 25, 6, 49, 8, 81]

>在第一种情况下,列表的整体已更改

>在第二种情况下,它仅更改了上半部分.

>在第三种情况下,它更改了下半部分,但是2中有1个值(步幅= 2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值