根据两个条件创建列表

时间:2017-06-04 19:42:14

标签: python list python-3.x append

我正在尝试根据用户的数据创建列表。这个数据是一个16个问题的调查,所以我想把数据分成16个答案的列表,或者只是answers = ['No data available的列表。到目前为止,我的代码如下所示。

studentanswers = []
contains_data = False
temp = []  
for i in answers:
if i == 'No data available':
    if contains_data:
        studentanswers.append(temp)
        temp = []
        studentanswers.append([i])
        contains_data = False
    else:
        studentanswers.append([i])
else:
    contains_data = True
    if len(temp) < 16:
        temp.append(i)
    else:
        studentanswers.append(temp)
        temp = []
        contains_data = False

然而,当我迭代时,数据会得到正确的计数,并且一些数据被分配给错误的用户。例如,学生1的问题16将成为学生2的问题1.

2 个答案:

答案 0 :(得分:0)

尝试以下几点:

while answers:
    if answers[0] = 'No data available':
        studentanswers.append(['No data available'])
        answers = answers[1:]
    else:
       studentanswers.append(answers[:16])
       answers = answers[16:]

答案 1 :(得分:-1)

你的问题不清楚,如果我做对了,你想要一份每个学生答案的清单。

如果是这种情况,那么这应该足够了:

studentanswers = list()
for x in range(len(answers)/16):
    sudentsanswers.append(list(answers[y*16:(y+1)*16])

这假设每位学生有16个答案。

编辑,我刚看到你的其他评论,这将有效:

studentanswers = list()
studentanswers.append(list())
c = int(0)
for x in range(len(answers)):
    if (c<16 && x  != "No data available"):
        studentanswers[len(studentanswers)-1].append(x)
        c+=1
    else:
        c=0
        studentanswers.append(list())
        studentanswers[len(studentanswers)-1].append(x)
        if x == "No data available":
            studentanswers.append(list())