list按照另一个list切分
时间: 2024-06-03 09:04:52 浏览: 16
您好,list按照另一个list切分是一种常见的数据处理操作。具体地,我们可以将一个list中的元素按照另一个list中的值来进行切分。如果某个元素在另一个list中出现,则将该元素之前的所有元素划分为一组。例如,对于以下两个list:
```
lst1 = [1, 2, 3, 4, 5, 6]
lst2 = [3, 6]
```
我们可以将lst1划分为以下两个子list:
```
[[1, 2, 3], [4, 5, 6]]
```
其中,[1, 2, 3]是由lst1中前三个元素组成的子list,因为3在lst2中出现;[4, 5, 6]则是由lst1中剩余的元素组成的子list。
在Python中,我们可以使用列表解析来实现这个操作,代码如下:
```
lst1 = [1, 2, 3, 4, 5, 6]
lst2 = [3, 6]
res = [lst1[i:j] for i, j in zip( + [idx+1 for idx, val in enumerate(lst1) if val in lst2],
[idx+1 for idx, val in enumerate(lst1) if val in lst2] + [None])]
print(res)
```
其中,zip函数用于将两个list按照相同的索引位置进行打包。` + [idx+1 for idx, val in enumerate(lst1) if val in lst2]`用于构造一个新的list,其中包含了每个子list的起始位置。`[idx+1 for idx, val in enumerate(lst1) if val in lst2] + [None]`则构造了一个新的list,其中包含了每个子list的结束位置(最后一个子list的结束位置为None)。最终,我们使用列表解析将原始list按照这些起始和结束位置进行切分,并将结果保存在一个新的list中。