首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一行函数中将列表的特定位置的元素追加到另一个列表中

在一行函数中将列表的特定位置的元素追加到另一个列表中
EN

Stack Overflow用户
提问于 2022-11-06 15:24:32
回答 1查看 25关注 0票数 0

我需要从另一个具有N=a*M元素(a>=1)的列表中生成M个列表,因此i分区的第n个元素被添加到I新列表的第n个位置(i=1..M,因此原始列表被分割成N/M长度的等份)。

用一个例子更容易理解:所以假设我有这个列表lg=[1,2,3,4,5,6,7,8,9],结果应该是l1=[1,4,7], l2=[2,5,8], l3=[3,6,9]

我是用这个代码做的:

代码语言:javascript
运行
复制
lg=[1,2,3,4,5,6,7,8,9] # N=9
M=3
lr=[[] for _ in range(M)]

print(lr) # [[], [], []]
idx_lr = 0
for idx,el in enumerate(lg): # the enumerate is not necessary, was for testing purposes
  lr[idx_lr].append(el)
  idx_lr += 1
  if idx_lr == M:
    idx_lr = 0
print(lr) #[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

它可以工作,但是,这是一段丑陋的代码,有一种方法可以用一行函数来完成吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-06 15:27:18

您可以通过简单的切片操作来完成此操作:

代码语言:javascript
运行
复制
>>> lg=[1,2,3,4,5,6,7,8,9]
>>> [lg[i::3] for i in range(3)]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

切片的第三部分是片中每个元素之间的“步骤”;它默认为1,但将其设置为M使其接受每个Mth元素。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74337178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档