在python中同时读取两个列表中的输入

时间:2017-06-21 12:11:35

标签: python

我正在解决hackerrank的一个问题,并且在阅读输入时遇到了问题。

输入格式为:

第一行:一个数字n,告诉不行。我必须阅读的一行。

n行:两个以空格分隔的值,例如:

1 5

10 3

3 4

我想在两个列表中读取空格分隔值。 所以列表'a'应该是[1,10,3]而列表'b'应该是[5,3,4]。

这是我的代码:

dist = []
ltr = []
n = input()
for i in range(n):
    ltr[i], dist[i] = map(int, raw_input().split(' '))

它给了我以下错误:

  

ltr [i],dist [i] = map(int,raw_input()。split(''))

     

IndexError:列表   分配指数超出范围。

2 个答案:

答案 0 :(得分:4)

这是Python初学者常见的错误。

您正尝试将输入的值分配给列表distltr中的特定单元格,但由于它们是空列表,因此没有可用的单元格。索引i超出范围,因为索引根本没有范围。

因此,不是分配到列表中,而是添加到

之类的内容中
dist = []
ltr = []
n = input()
for i in range(n):
    a, b = map(int, raw_input().split(' '))
    ltr.append(a)
    dist.append(b)

请注意,我还通过插入空格来改进代码的格式。在学习开始时遵循良好的风格对你有好处,这样你以后就可以少花些时间了。

答案 1 :(得分:0)

这可能会以某种方式帮助你;这是解决这个问题的一种更简单的方法,因为你知道" 简单比复杂更好。":

dist=[]
ltr=[]
n=int(raw_input())
for i in range(n):
    dist.append(int(raw_input()))
    ltr.append(int(raw_input()))

print(dist)
print(ltr)

输出:

[1, 10, 3]
[5, 3, 4]