一个列表 > 多个列表的列表

6 投票
6 回答
528 浏览
提问于 2025-04-16 01:11

在Python中,我想把一个很长的列表分成多个小列表,每当遇到'-'的时候就分开。比如,我想把下面这个:

['1', 'a', 'b','---', '2','c','d','---','3','123','e','---','4']

变成这个:

[['1', 'a', 'b'],['2','c','d'],['3','123','e'],['4']]

非常感谢!

6 个回答

1

这里有一种方法可以做到:

lst=['1', 'a', 'b','---', '2','c','d','---','3','123','e','---','4']
indices=[-1]+[i for i,x in enumerate(lst) if x=='---']+[len(lst)]
answer=[lst[indices[i-1]+1:indices[i]] for i in xrange(1,len(indices))]
print answer

基本上,这段代码的作用是找到列表中字符串'---'的位置,然后根据这些位置把列表切分开。

4

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。为了帮助大家更好地理解这些问题,很多人会在网上提问,比如在StackOverflow这个网站上。

在这些提问中,用户通常会描述他们遇到的具体情况,可能会附上代码示例,像

import itertools

l = ['1', 'a', 'b','---', '2','c','d','---','3','123','e','---','4']
r = []

i = iter(l)
while True:
  a = [x for x in itertools.takewhile(lambda x: x != '---', i)]
  if not a:
    break
  r.append(a)
print r

# [['1', 'a', 'b'], ['2', 'c', 'd'], ['3', '123', 'e'], ['4']]
这样的占位符就是用来表示代码的部分。通过这些代码,其他人可以更清楚地看到问题出在哪里,从而提供帮助。

总之,提问和分享代码是学习编程的重要部分,它可以帮助我们更快地解决问题,掌握新知识。

17

当然可以!请看下面的内容:

在编程中,有时候我们需要把一些数据存储起来,以便后续使用。这个过程就像把东西放进一个盒子里,等需要的时候再拿出来。

有很多种方法可以存储数据,比如使用变量、数组或者数据库。变量就像是一个小盒子,可以用来存放一个值;数组则是一个大盒子,可以存放多个值;而数据库则是一个更复杂的系统,可以存放大量的数据,并且可以方便地进行查询和管理。

当我们需要使用这些存储的数据时,可以通过一些简单的操作来取出它们,就像打开盒子拿出里面的东西一样。

希望这个解释能帮助你更好地理解数据存储的概念!

In [17]: import itertools
# putter around 22 times
In [39]: l=['1', 'a', 'b','---', '2','c','d','---','3','123','e','---','4']

In [40]: [list(g) for k,g in itertools.groupby(l,'---'.__ne__) if k]
Out[40]: [['1', 'a', 'b'], ['2', 'c', 'd'], ['3', '123', 'e'], ['4']]

撰写回答