Python 3 中具有列表理解的多行用户输入

Multiline user input with list comprehension in Python 3

新人总数 Python 在这里。我正在使用 Python 3 解决 CodeAbbey 的问题,我想帮助缩短用户输入的代码。

假设我想从用户那里得到这个输入:

3
2 3
4 5
6 7

第一行是案例数,后面每一行都是案例本身,有2个参数。到目前为止,我已经想出这样做的方法:

N=int(input('How many cases will you calculate?\n'))
print('Input parameters separated by spaces:')
entr = [list(int(x) for x in input().split()) for i in range(N)]

问题是我宁愿询问列表理解中的所有输入,然后分配 N=entr[0]。但是,如何在不使用 range(N) 的情况下获得列表理解以将输入分成多行?

我试过了:

entr = [list(int(x) for x in input().split()) for x in input()]

但是没用。

我看不出在列表推导中这样做有什么好处,但这里有一个允许将所有数据复制粘贴到以下位置的解决方案:

entr = [list(int(x) for x in input().split())
        for i in range(int(input()))]
N = len(entr)

您的解决方案非常接近。只需要给外部迭代一些东西来迭代(使用 range())而不是一个数字。

是的,你可以在列表理解中试试这个

cases = [input().split() for _ in range(int(input()))]
flatList = [int(item) for elem in cases for item in elem]
print(flatList)

I simply used this for python list input

n = int(input())
a = [list(map(input().split())) for i in range(n)]
print(a)
'''
3
2 3
4 5
6 7
[[2, 3],[4, 5], [6,7]]
'''

arr = []
for i in range(int(input())):
    a = list(map(int,input().split()))
    arr.append(a)
print(arr)

'''
3
2 3
4 5
6 7
[[2, 3],[4, 5], [6,7]]'''

''' or in single list '''
arr = []
for i in range(int(input())):
    a,b = map(int,input().split())
    arr += [a,b]
print(arr)

'''
3
2 3
4 5
6 7
[2,3,4,5,6,7]'''
    

Im newbie, how can i use this editor for python output console?

这里输入的是int。但是你可以改变它。根据您的输入需要。 4是没有。您将插入的 input() 也可以编辑 acc。满足您的需要 '''enter = list(i for i in (int(input() for i in range(4)))

打印(输入)'''