如何在Python中使用嵌套列表作为输入

2024-07-07 07:50:48 发布

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

我必须从用户那里获取以下格式的输入,并从中创建一个嵌套列表。第一行是行数。

3  
Sourav Das 24 M  
Titan Das 23 M  
Gagan Das 22 F  

嵌套列表应如下所示:

parentlist = [  
['Sourav', 'Das', '24', 'M']  
['Titan', 'Das', '23', 'M']  
['Gagan', 'Das', '22', 'M']  
]  

我写了以下代码:

k = int(raw_input())
parentlist = [[]]
for i in range(0, k):
    str1 = raw_input()
    parentlist[i] = str1.split()

但在进入第二行后,它会给出一些索引越界异常(如下所示)。它给出这个异常的代码有什么问题?

3
Sourav Das 24 M
Titan Das 23 M
Traceback (most recent call last):
  File "nested.py", line 5, in <module>
    parentlist[i] = str1.split()
IndexError: list assignment index out of range

(我是Python新手。如果你在我的代码中发现了错误,也要指出其他错误。)


Tags: 代码用户in列表inputraw错误range
3条回答

您的parentlist是一个包含一个元素的列表。在for循环的第二次迭代中,尝试访问parentlist的第二个元素,这将导致索引器错误。Python中的列表与JavaScript或PHP中的数组不同。

实际上,您要做的是创建一个空列表,然后将str1.split()的结果附加到该列表中。

k = int(raw_input())
parentlist = []
for i in range(0, k):
    str1 = raw_input()
    parentlist.append(str1.split())

阅读第二行时,尝试将分割的行存储到parentlist[1]中。但是您的parentlist只有一个元素(paraentlist[0])。

解决方案是追加列表。

k = int(raw_input())
parentlist = []
for i in range(0, k):
    str1 = raw_input()
    parentlist.append(str1.split())

您应该简单地使用list comprehension,因为代码会越来越短、越来越快。

k = int(raw_input())
l = []
print [raw_input().split() for i in range(0, k)]

相关问题 更多 >