繁体   English   中英

从python中的单行取n个整数输入

[英]Taking n number of integer inputs from a single line in python

因此,基本上我从用户那里获取一个n值,其中n = int(input("number of boats")) ,然后从一行获取n个整数输入(假设我的输入是2 6 3 6 4 7 4 ,它们写2 ,我只取前两个数字2 6 ),并将其附加到列表中(我之前定义为mylist = [] )。 我想将它们作为整数而不是列表中的字符串。 我怎样才能做到这一点?


编辑:

好的,也许我的措辞不是最好的,所以我将尝试以不同的方式解释。 我从.txt文件中输入内容,该文件具有:

3 23 56 36 48 46 97

开始时的3决定了有多少条船,例如23 56是第一条船的值。 我想输入确定多少条船的输入,然后将所有值作为输入并将它们全部放入一个列表中[23, 56, 36, 48, 46, 97] 请注意,我必须使用输入而不是文件读取,因为将测试不同的值。 我需要将这些值作为整数,以便不能将每一行都当作一个字符串。

您可以这样尝试。

注意:我认为,不需要为n取显式值。

>>> import re
>>> 
>>> s = '12 34      56     34   45'
>>> l = re.split(r'\s+', s)
>>> l
['12', '34', '56', '34', '45']
>>> 
>>> [int(n) for n in l]
[12, 34, 56, 34, 45]
>>> 
>>> # Using the above concept, it can be easily done without the need of explicit n (that you are taking)
... 
>>> mylist = [int(n) for n in re.split('\s+', input("Enter integers (1 by 1): ").strip())]
Enter integers (1 by 1): 12 34   56 67  99 34 4 1 0 4 1729
>>> 
>>> mylist
[12, 34, 56, 67, 99, 34, 4, 1, 0, 4, 1729]
>>> 
>>> sum(mylist)
2040
>>> 

您应该尝试以下代码:

n = int(input("number of boats:"))
mylist = []
for _ in range(n):            # Taking n lines as input and add into mylist
    mylist.extend(list(map(int, input().rstrip().split())))
print("mylist is:", mylist)

输出为:

number of boats:3
23 56
36 48
46 97
mylist is: [23, 56, 36, 48, 46, 97]

您可以尝试的一种方法:

numlist = []
n = stdin.readline()
for _ in range(int(n)):
    numlist.extend(stdin.readline().split())
stdout.write(str(numlist)) 

此方法的输出:

2 
1 2
3 4 5

该方法花费的时间:

import timeit
setup = "from sys import stdin,stdout"
statement = '''
numlist = []
n = stdin.readline()
for _ in range(int(n)):
    numlist.extend(stdin.readline().split())
stdout.write(str(numlist))   
'''
print (timeit.timeit(setup = setup, 
                    stmt = statement, 
                    number = 1) )

输出与执行所需的时间:

2 
1 2
3 4 5
['1', '2', '3', '4', '5']7.890089666

如果想法是接受n个输入,则可以执行以下操作:

mylist = list()
n = int(input("number of boats"))
for i in range(n):
    mylist.append(int(input("integer number")))

如果您的想法是使用带有值的字符串,并让用户决定该字符串的编号如何让您执行此操作:

boats = '2 6 3 6 4 7 4'
n = int(input("number of boats"))
boats = list(map(int, boats.split(' ')))
mylist = boats[:n]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM