我想将列表中的每个第 N 个元素设置为其他值。
(Like 这个问题 https://stackoverflow.com/questions/14994140/how-do-you-make-every-other-integer-in-an-array-equal-to-0-in-matlab?rq=1这是针对 Matlab 的。)
这是 N=2 的尝试:
>>> x=['#%d' % i for i in range(10)]
>>> x
['#0', '#1', '#2', '#3', '#4', '#5', '#6', '#7', '#8', '#9']
>>> x[0::2] = 'Hey!'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: attempt to assign sequence of size 4 to extended slice of size 5
我怎样才能解决这个问题?切片似乎期望一个可迭代的值,而不仅仅是一个值。
切片分配的右侧必须是适当长度的序列; Python正在治疗'Hey!'
作为字符序列'H', 'e', 'y', '!'
.
你可以聪明地创建一个适当长度的序列:
x[::2] = ['Hey!'] * len(x[::2])
然而,最明确的方法是for
loop:
for i in range(0, len(x), 2):
x[i] = 'Hey!'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)