Python 如何在单行for循环中使用list*I
当前代码:Python 如何在单行for循环中使用list*I,python,list,for-loop,lambda,Python,List,For Loop,Lambda,当前代码: res = [] for i in range(0,len(nums),2): res.extend([nums[i+1]]*nums[i]) return res 预期: res = [([nums[i+1]]*nums[i]) for i in range(0,len(nums),2)] 区别: 给出:[[1,1],[2,2,2]] 预期:[[1,1,2,2]]您实际上可以在列表理解中使用多个子句来实现这一点(假设您想要列表中nums[i]的nums[
res = []
for i in range(0,len(nums),2):
res.extend([nums[i+1]]*nums[i])
return res
预期:
res = [([nums[i+1]]*nums[i]) for i in range(0,len(nums),2)]
区别:
给出:[[1,1],[2,2,2]]
预期:
[[1,1,2,2]]
您实际上可以在列表理解中使用多个子句来实现这一点(假设您想要列表中nums[i]
的nums[i+1]
副本,并且希望列表是一维的):
在这里,我使用表示范围内的I(0,len(nums),2)
,就像在原始代码中一样,使用表示范围内的I(nums[I])
来模拟*nums[I]
提供的重复
如果需要,您可以将其包含在另一个列表中。列表理解相当于
res.append(…)
而不是res.extend(…)
。除非您使用list(itertools.chain(*[…])
或其他方法,否则无法完成nums
nums = [2, 1, 3, 2]
res = [nums[i+1] for i in range(0,len(nums),2) for _ in range(nums[i])]
# [1, 1, 2, 2, 2]