在Python中使用单值输入

2024-06-28 20:21:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python中解决一个kata问题,我有两个输入列表,比如说权重和值,它按顺序获取输入(value1,weight1,value2,weight2,…) 如果是C++,我可以每次只使用一个元素,将{{CD1}}应用到数组中。但是对于Python,我不知道如何接受这个输入。 如果输入是

60 10 100 20 120 30(单行)

我希望我的两个列表val和w都有值

val=[60,100,120]
w=[10,20,30]

如何在Python中接受此类输入?是否可以一次只读取一个输入,比如C++中的CIN?p>


Tags: 元素列表顺序val数组权重单行value1
3条回答

这应该可以做到

values = input("Enter values: ").split(" ")

if(len(values) % 2 != 0):
    print("Error, uneven number of values and weights")
else:
    val = []
    w = []
    for i in range(0, len(values) - 1, 2):
        val.append(values[i])
        w.append(values[i+1])

    print("val: ", val)
    print("w: ", w)

不,据我所知,你不能input()是一个函数,它一次读取一行作为整个字符串。 由整行空格分隔的整数组成列表的常用方法是使用字符串对象的内置map()函数和split()方法:

numbers = map(int, input.split())

numbers现在将包含该行上的数字列表。 首先,input()将整行读取为包含空格的字符串。 split()函数在空格处拆分输入,您还可以传入一个字符串参数,使其拆分到您想要的任何位置,即像,这样的自定义分隔符,并创建这些数字的字符串列表 map()对该列表中的每个数字调用int()。 在C++中,就像你需要事先知道输入的大小一样,你可以在列表中运行for循环,现在将值和权重分成两个列表。p>

val, w = [], []
for i in range(len(numbers)):
    if i % 2 == 0: val.append(numbers[i])
    else: w.append(numbers[i])

为了获得更好的性能(与较大的输入大小相关),您甚至可以跳过map()步骤,执行如下操作:

numbers = input().split()
val, w = [], []
for i in range(len(numbers)):
    if i % 2 == 0: val.append(int(numbers[i]))
    else: w.append(int(numbers[i]))

您可以使用split将空格分隔的输入读取到列表中,然后使用切片获得奇偶索引元素:

val = input().split()
val = [int(i) for i in val] #to integer
w = val[1::2] # get only odd indices
val = val[0::2] # get only even indices

print(val) # [60,100,120]
print(w) # [10,20,30]

然后可以使用常规索引来获取列表中的单个元素

相关问题 更多 >