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()]

但它不起作用。

原文由 MPadilla 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 690
2 个回答

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

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

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

原文由 vinod 发布,翻译遵循 CC BY-SA 3.0 许可协议

我只是将其用于 python 列表输入

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]'''


我是新手,如何将此编辑器用于 python 输出控制台?

原文由 BitchBark 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题