我是python的新手并试图了解python代码的工作原理。有人可以帮我理解代码。 下面是代码
n=int(input())
marksheet=[[input(),float(input())] for i in range(n)]
i=''
print(marksheet)
print([marks for name,marks in marksheet])
我的输入是
2
sam
98
mike
95
输出我正在
[['sam', 98.0], ['mike', 96.0]]
[98.0, 96.0]
我的第二份印刷声明得到了我想要的结果,但我不明白它在做什么。我把它改成了这样的东西,它仍然有用
print([test for yellow,test in marksheet])
有人可以帮助我理解。
注意:我是python的新手,所以我正在寻求帮助。请不要使用任何侮辱性的语言。
答案 0 :(得分:0)
在列表中迭代时,您正在解包名称和test_score元组。
以同样的方式获取名称:
print([name for name,marks in marksheet])
输出:
['sam', 'mike']
再次获取整个元组列表。虽然这是微不足道的,但我只是想让你明白
print([(name,marks) for name,marks in marksheet])
输出:
[('sam', 98.0), ('mike', 96.0)]
答案 1 :(得分:0)
为了理解你的代码,最好逐行分解
n=int(input()) #takes input from a user and converts it to integer
由于默认情况下input()是一个字符串,如果输入一个类似3的数字,输出将是字符串" 3"。 int(" 3")将字符串3转换为实际数字3
marksheet=[[input(),float(input())] for i in range(n)] # List comprehension
列表理解,在这种情况下,创建一个列表,列表看起来像这[[int,float],[int,float]],n次。因此,如果第一行中的n = 2,则标记表将要求输入4个数字。
例:
n=int(input()) #let's say enter 2
2
marksheet=[[input(),float(input())] for i in range(n)] #enter 1,2,3,4
1
2
3
4
print(marksheet) #outputs [['1', 2.0], ['3', 4.0]]
这个只是创建一个空字符串
i=''
print(marksheet) # self explanatory
你宁愿在这里混淆名字。由于您的列表看起来像[int,float],
print([marks for name,marks in marksheet]) # outputs [2.0, 4.0]
打印你的浮动。更好的印刷声明是:
print([float for int,float in marksheet]) # outputs [2.0, 4.0]
请注意,名称无关紧要。它只是列表中变量的位置。
print([second for first,second in marksheet]) #same thing
希望这会有所帮助。另外,我的答案是:)
答案 2 :(得分:0)
第1行
n=int(input())
此行从控制台获取新的行输入。这里,控制台中的第一行是2
,因此n=2
第2行
marksheet=[[input(),float(input())] for i in range(n)]
这是列表理解。一个更容易理解的翻译将是
for i in range(n):
p = input()
q = float(input())
marksheet.append([p,q])
第3行
i=''
将i
分配给空字符串。不是必需的。
第4行
print(marksheet)
打印标记表
第5行
print([marks for name,marks in marksheet])
这可能有些令人困惑。这也是列表理解。你正在为每个内部数组迭代它。
for name,marks in marksheet: '''Here name would be 1st element of inner array and 2nd element would be 2nd element of inner array.'''
all_marks.append(marks)
print(all_marks)
完成工作程序
n=int(input())
marksheet=[]
for i in range(n):
p = input()
q = float(input())
marksheet.append([p,q])
print(marksheet)
all_marks=[]
for name,marks in marksheet:
all_marks.append(marks)
print(all_marks)