我正试图解决代码战的问题,我完全困惑于:
y = [-1, -1, 2, 8, -1, 4]
z = [1,3,5]
#to create [1,3,2,8,5,4]我该怎么做?
我试着做:
for e in range(len(y)):
try:
if y[e] < 0:
y[e] = z[e]
except:
pass但是,只有当否定与z中的内容相对应时,这才能起作用。
发布于 2016-09-11 22:43:21
如果您确信负数的数目总是与z相等,则可以将z转换为可迭代的,并使用列表理解来创建新列表:
In [9]: z = iter(z)
In [10]: [next(z) if i < 0 else i for i in y]
Out[10]: [1, 3, 2, 8, 5, 4]请注意,如果z的长度小于负数数,则会引发StopIteration错误。
发布于 2016-09-11 22:50:27
一条龙。使用pop()模拟队列行为。(注意,这消耗了z)
>>> print([num if num > 0 else z.pop(0) for num in y])
[1, 3, 2, 8, 5, 4]发布于 2016-09-11 22:41:12
您试图对这两个列表使用相同的索引,这似乎不是您的示例中的正确行为。例如,y中的-1位于索引4,但在索引2处被z中的5替换。
zindex = 0
for yindex in range(len(y)):
if y[yindex] < 0:
y[yindex] = z[zindex]
zindex += 1https://stackoverflow.com/questions/39441323
复制相似问题