Python在input列表,怎么一次性打出下面效果?

1
2
3
4
 
a
b
c
 
 
阿哲
甜的
满天星
女孩的吻
 
#每次输入行数是不确定的,空行为一个列表,要求一次性打出下面效果
 
打印
['1', '2', '3', '4']
['a', 'b', 'c']
['阿哲', '甜的', '满天星', '女孩的吻']
 
res = []
for i in range(3):
    a = []
    while True:
        b = input()
        if b:
            a.append(b)
        elif a:
            res.append(a)
            break

for i in res:
    print(i)

首先,你所说的“每次输入行数是不确定的”指的是列表的长度不确定还是列表的数量不确定?

  1. 看你的问题,如果运行都只有三个列表的话,可以用for循环嵌套while循环来达到目的。while循环的退出条件即为不输入值直接回车。如果是这样的话,看代码:
    list1 = []
    for i in range(3): #一共输入三个列表,而i表示了当前输入的列表在list1里所在的位置下标
       list1.append([]) #在主列表中加一个空列表形成二维数组
       while 1: #不断循环直到不输入值直接回车
           val = input()
           if val == '': #如果没有输入值,则表示当前列表输入完成,退出循环
               break
           else:
               list1[i].append(val) #否则在目前处理的列表位置加上当前的值
    for i in list1:   #遍历主列表并打印
       print(i)
    
  2. 当然,如果并不是每次总是只输入三个列表,可以将外围的for循环也改成while循环,退出条件也是不输入值直接回车,即:
    list1 = []
    i = 0
    while 1:
       val = input() 
       if val == '': #判定是否退出
           break
       list1.append([])
       while 1: 
           if val == '': 
               break
           else:
               list1[i].append(val) 
               val = input() 
       i += 1
    for i in list1: #遍历主列表并打印
       print(i)
    

img


代码


a=list(input().split())
b=list(input().split())
c=list(input().split())
print(a)
print(b)
print(c)

运行结果:

img