Python 使用很少的条件将阵列拆分为更小的阵列

Python 使用很少的条件将阵列拆分为更小的阵列,python,list,split,Python,List,Split,任务是加载一个文件,其中包含一些答案数不同的问题,并且列出的第一个答案始终是正确的 e、 g: 谁是简? 姑娘 男孩 二者都 我们为什么在这里? 因为 为了好玩 所以我想我会把几行读成一个数组,但最后我需要能够将每个问题的答案(并以某种方式保持正确答案的轨迹),然后将问题也重新排列 因此,如果我将这些行读入数组,它将如下所示: a = ['Who is Jane?', 'Girl', 'Boy', 'Both', 'Why are we here?', 'Because', 'For fun'

任务是加载一个文件,其中包含一些答案数不同的问题,并且列出的第一个答案始终是正确的

e、 g:

谁是简?
姑娘
男孩
二者都
我们为什么在这里?
因为
为了好玩
所以我想我会把几行读成一个数组,但最后我需要能够将每个问题的答案(并以某种方式保持正确答案的轨迹),然后将问题也重新排列

因此,如果我将这些行读入数组,它将如下所示:

a = ['Who is Jane?', 'Girl', 'Boy', 'Both', 'Why are we here?', 'Because', 'For fun']
现在我想我要做的是最好把数组分割成更小的数组,其中总是包含问题及其所有答案。 所以我要的是

test = [['Who is Jane?', 'Girl', 'Boy', 'Both'], ['Why are we here?', 'Because', 'For fun']]
有人知道我怎么做吗?
我知道,要访问问号,您可以使用
a[0][1]
,这将为您提供来自
“谁是简”

的问号,假设
包含文本文件中的行,并且这些行已经过适当的预处理,下面是一个可能算法的概要:

result = []
group = [lines[0]]

for line in <lines from the second element to the last>:
    if <line ends with a question mark>:
        # append group to result
        # reset group to an empty list

    # append line to group
result=[]
组=[行[0]]
对于线路输入:
如果:
#将组附加到结果
#将组重置为空列表
#将行追加到组
这样做的目的只是迭代行列表,在遇到问题时创建一个新列表,并将以前的列表附加到整个结果中



根据你所学的课程,提高你解决问题的能力(比如找到一个类似上述的算法)比完美地学习Python(或任何语言)更重要。

这是我的实现,也许你的更好

>>> a = ['Who is Jane?', 'Girl', 'Boy', 'Both', 'Why are we here?', 'Because', 'For fun']
>>>
>>> def fun(x):
...   y = []
...   for i in x:
...     if i.endswith('?') and y:
...       yield y
...       y = []
...     y.append(i)
...   else:
...     yield y
...
>>> list(fun(a))
[['Who is Jane?', 'Girl', 'Boy', 'Both'], ['Why are we here?', 'Because', 'For fun']]

这是家庭作业吗?到目前为止你试过什么?我们将帮助您解决具体问题,但我们不会为您完成工作。第一步是从文件中读取文本,如下所述。总的来说,Python文档和教程都非常好,并对此进行了解释。这是家庭作业的一部分。。但是我看了清单文件。。也许我没有正确理解。。我知道怎么洗牌,还有其他的。。我只是不知道如何将数组列表划分为始终包含一个问题及其答案的列表。我只有python一个月了。。每周上课两次。。而且我以前从未编程过。。所以我明白你在说什么Felix,但是我认为看代码并试着理解代码更有用,然后根据你写的东西自己来写,因为没有建议我在python中做不了多少事情Yetyu你肯定应该阅读教程:很好:)Kev,这个词是“实现”。但你不应该为别人做家庭作业。指导他们解决问题,自己学习。这是gr8现在我必须了解函数是如何工作的,然后我应该能够实现它:)thx很多人..是的,你是对的,但就像我说的,我只使用python一段时间。在我发布问题之前,我知道导入部分是下一个问题,我可以通过末尾的问号找到它。。我可能应该用一些作为循环,这样每个问题都能解决。我只是不知道怎么。。在此之前我做的任务是创建所有可能的长度N组合,其中每个位置可以是1或0。。因此,如果用户键入示例3,程序将显示8个组合的列表,如000001等。