0

基本上我想做的是有一个程序根据用户输入制作一个列表,例如:

a=input
b=input
c=input

list1=[a,b,c]

然后让它再做一次(形成list2),依此类推,直到它到达list37,我想在其中制作一个列表列表,例如:

listMASTER=[list1,list2,list3...list36]

我不想写这个:

a=input
b=input
c=input

listn=[a,b,c]

36 次,所以我希望它一遍又一遍地循环,每次形成一个新列表。

4

5 回答 5

1

使用这种方式可以轻松完成:

olist=[]
for i in range(n): #n is the number of items you need the list (as in your case, 37)
    lis=[input(),input(),input()]
    olist.append(lis)

这将减少步骤数

于 2013-06-08T23:32:48.060 回答
1

尝试这样的事情:

outer_listen = []
n = 36 #Or howmany ever times you want to loop
for i in range(n): #0 through 35
    a = input()
    b = input()
    c = input()
    lstn = [a, b, c]
    outer_listen.append(lstn)
于 2013-06-08T23:18:17.867 回答
1

您可以使用嵌套循环:

list_of_lists = [[input() for _ in range(3)] for _ in range(36)]

或者更方便的是,也接受来自文件的输入,例如,使用 csv 格式:

a,b,c
d,f,g
...

对应代码:

import csv
import fileinput

list_of_lists = list(csv.reader(fileinput.input()))

用法:

$ python make-list.py input.csv

或者

$ echo a,b,c | python make-list.py
于 2013-06-08T23:44:04.253 回答
0

有点密集但仍然可以通过列表理解阅读

n = 36
prompt = 'Please enter for {}{}: '
all_inputs = [[input(prompt.format(char, num)) for char in 'abc'] 
               for num in range(n)]
print(all_inputs)

为您提供 36 x 3 的输入提示:

Please enter for a0: 1
Please enter for b0: 2
Please enter for c0: 3
Please enter for a1: 4
Please enter for b1: 5
Please enter for c1: 6
...
[['1', '2', '3'], ['4', '5', '6'], ...]
于 2013-06-08T23:40:50.390 回答
0
master = [[input(),input(),input()] for i in xrange(37)]
于 2013-06-08T23:42:30.757 回答