python - 根据另一个列表的索引将列表拆分为块
问题描述
我想使用另一个列表的值作为要拆分的范围,将列表拆分为块。
indices = [3, 5, 9, 13, 18]
my_list = ['a', 'b', 'c', ..., 'x', 'y', 'z']
所以基本上,将 my_list 从范围中拆分出来:
my_list[:3], mylist[3:5], my_list[5:9], my_list[9:13], my_list[13:18], my_list[18:]
我试图将索引分成 2 块,但结果不是我需要的。
[indices[i:i + 2] for i in range(0, len(indices), 2)]
我的实际列表长度是 1000。
解决方案
你也可以使用简单的python来做到这一点。
数据
indices = [3, 5, 9, 13, 18]
my_list = list('abcdefghijklmnopqrstuvwxyz')
解决方案
使用列表理解。
[(my_list+[''])[slice(ix,iy)] for ix, iy in zip([0]+indices, indices+[-1])]
输出
[['a', 'b', 'c'],
['d', 'e'],
['f', 'g', 'h', 'i'],
['j', 'k', 'l', 'm'],
['n', 'o', 'p', 'q', 'r'],
['s', 't', 'u', 'v', 'w', 'x', 'y', 'z']]
检查是否提取了正确的索引顺序
dict(((ix,iy), (my_list+[''])[slice(ix,iy)]) for ix, iy in zip([0]+indices, indices+[-1]))
输出
{(0, 3): ['a', 'b', 'c'],
(3, 5): ['d', 'e'],
(5, 9): ['f', 'g', 'h', 'i'],
(9, 13): ['j', 'k', 'l', 'm'],
(13, 18): ['n', 'o', 'p', 'q', 'r'],
(18, -1): ['s', 't', 'u', 'v', 'w', 'x', 'y', 'z']}
推荐阅读
- html - Bootstrap 水平表单 - class="form-group" 不起作用
- javascript - 如何通过第一个数组的输入返回第二个数组的值
- windows - Pyspark java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
- android - Google Admob 广告未展示
- python - 使用 tweepy 检索自月初以来的推文
- java - 如何在 Eclipse 中将受版本控制的本地 Java 项目推送到 GitHub?
- java - java-regex 在 80 个字符后拆分字符串。如果字符串中间分裂到最近的空间之前
- python - 仅使用 python 套接字连接到 docker.sock 以获取容器统计信息
- powershell - 使用 PowerShell 从 ftp 下载具有特定扩展名的文件
- assembly - 仅当我使用自己的 prolog/epilogs 时 z/OS Metal C assemble 才会失败