此for循环应该分别生成问题和答案的两个列表,但输出只是原始列表中最后一个元素的最后一个值。我想知道为什么会发生这种事。很清楚还有另一种方法可以做到这一点,但是为什么这种解包和附加的特殊方法不起作用呢?谢谢
question_list = ['1+1=2', '2+2=4', '7-4=3']
questions = []
answers = []
for question in question_list:
q, a = question.split("=")
questions.append(q)
answers.append(a)
发布于 2020-05-13 02:55:43
当我修复了问题中糟糕的格式后,这似乎工作得很好:
>>> question_list = ['1+1=2', '2+2=4', '7-4=3']
>>> questions = []
>>> answers = []
>>> for question in question_list:
... q, a = question.split("=")
... questions.append(q)
... answers.append(a)
...
>>> questions, answers
(['1+1', '2+2', '7-4'], ['2', '4', '3'])
一种更简洁的方式是使用zip
>>> questions, answers = zip(*[q.split("=") for q in question_list])
>>> questions, answers
(('1+1', '2+2', '7-4'), ('2', '4', '3'))
发布于 2020-05-13 02:59:04
程序运行得很好。输出:'1+1','2+2','7-4‘
print(questions, answers)
发布于 2020-05-13 03:00:35
它工作正常,您可能正在打印question
而不是questions
。
使用列表理解生成2列表的另一种格式:
questions = [x.split("=")[0] for x in question_list]
answers = [x.split("=")[1] for x in question_list]
print(questions, answers)
https://stackoverflow.com/questions/61759683
复制相似问题