我必须以下列格式从用户那里获取输入,并从中创建一个嵌套列表。第一行是行数。
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的新手。如果你在我的代码中找到任何错误,请指出其他任何错误。)
答案 0 :(得分:5)
当您读取第二行时,您尝试将拆分行存储到父列表[1]中。但是您的父列表只有一个元素(paraentlist [0])。
解决方案是附加列表。
k = int(raw_input())
parentlist = []
for i in range(0, k):
str1 = raw_input()
parentlist.append(str1.split())
答案 1 :(得分:2)
您的parentlist
是一个包含一个元素的列表。在for
循环的第二次迭代中,您尝试访问导致IndexError的parentlist
的第二个元素。 Python中的列表与例如: JavaScript或PHP中的数组。
你真正想要做的是创建一个空列表,然后将str1.split()的结果附加到它。
k = int(raw_input())
parentlist = []
for i in range(0, k):
str1 = raw_input()
parentlist.append(str1.split())
答案 2 :(得分:1)
你很亲密
k = int(raw_input())
parentlist = []
for i in range(k):
str1 = raw_input()
parentlist.append(str1.split())
append
新列表中的内容如果你想走向糟糕的方向,你可以这样做,类似于你的代码
parentlist = [[]]*k
for i in range(k):
parentlist[i] = raw_input().split()
练习,找到[[]]*k
代表的语法......
答案 3 :(得分:1)
您应该只使用list comprehension
,因为代码会更短更快。
k = int(raw_input())
l = []
print [raw_input().split() for i in range(0, k)]
答案 4 :(得分:1)
在Python 3中:
l= [[input(), float(input())] for _ in range(int(input()))]
print l
输入:
5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39
输出:
[[Harry,37.21],[Berry,37.21],[Tina,37.2],[Akriti,41],[Harsh,39]]
答案 5 :(得分:0)
您的父母列表[[]]
的大小为1,其中0位置为空列表。
如果你输入父列表k列表,你的代码将会起作用:
parentlist = [[]] * k
或者使用append代替,但是append
需要额外查找方法名称。
答案 6 :(得分:0)
select
TOP 1 ItemName
from yourTable
order by
price desc,
CalorificValue desc
答案 7 :(得分:0)
scorelist =[]
n = int(input())
for i in range(n):
name.append(str(input()))
score.append(float(input()))
for i in range(n):
scorelist.append([name[i],score[i]])
print(scorelist)
答案 8 :(得分:0)
k = int(input())
parentlist = [None]*k
for i in range(0, k):
str1 = input()
parentlist[i] = str1.split()
print(parentlist)