Python 3.x 通过列表理解输入的功能是什么?
你知道当你通过尝试和错误找到解决方案时,你会绊倒太多以至于你现在无法理解答案吗 这件作品正发生在我身上:Python 3.x 通过列表理解输入的功能是什么?,python-3.x,input,list-comprehension,Python 3.x,Input,List Comprehension,你知道当你通过尝试和错误找到解决方案时,你会绊倒太多以至于你现在无法理解答案吗 这件作品正发生在我身上: entr = [list(int(x) for x in input().split()) for i in range(int(input()))] 通过复制和粘贴整个块完成输入: 9 8327 0 0070 0 2681 2 1767 0 3976 0 9214 2 2271 2 4633 0 9500 1 我的列表理解在每个步骤中具体做了什么?考虑到:如何使用for循环重写它 这相
entr = [list(int(x) for x in input().split()) for i in range(int(input()))]
通过复制和粘贴整个块完成输入:
9
8327 0
0070 0
2681 2
1767 0
3976 0
9214 2
2271 2
4633 0
9500 1
我的列表理解在每个步骤中具体做了什么?考虑到:如何使用for循环重写它 这相当于:
entr = []
for i in range(int(input())):
row = []
for x in input().split():
row.append(int(x))
entr.append(row)
您可以通过几个步骤将其复制粘贴到列表中。首先是内部循环/列表:
entr = []
for i in range(int(input())):
row = [int(x) for x in input().split()]
entr.append(row)
没有行
变量:
entr = []
for i in range(int(input())):
entr.append([int(x) for x in input().split()])
然后是外部循环/列表(为了清晰起见,复制了多行):
您具有相同的嵌套理解,除了内部理解是作为传递给list
构造函数的生成器编写的,因此它看起来像list(int(x)for x in input().split())
,而不是[int(x)for x in input().split()]
。这比使用列表理解更令人困惑
我希望这个解释有帮助 事实上,您的代码不是嵌套的列表理解,因为您使用的是
list
construtor,而不仅仅是列表理解。
这行代码与您的代码相同:
entr = [[int(x) for x in input().split()] for i in range(int(input()))]
要理解这一行,您必须记住python中列表理解的基本结构,它包括两个组件obj
和condition
,并用方括号括起来:
lst = [obj condition]
可以将其转换为如下循环:
lst = []
condition:
lst.append(obj)
那么,回到这个问题上来。
您现在需要做的是将嵌套列表理解分解为循环中的循环,通常从后面的条件开始,从外部空间到内部空间。你得到:
entr = []
for i in range(int(input())):
entr.append([int(x) for x in input().split()])) # the obj is a list in this case.
现在,您可以在第3行中打破列表
entr = []
for i in range(int(input())):
entry = []
for x in input().split():
entry.append(int(x))
entr.append(entry)
所以,现在原始行的内容可以很容易理解了
entr
的条目列表李>
字符串
转换为int
,这是您要输入的入口数(假设它是num
)李>
num
次,每次都应输入空格分隔的内容李>
entry
),您可以使用str.split()
方法(参数sep
默认为空格)输入该列表。并在每个循环中添加每个条目列表
条目
列表中的每个元素,它都转换为int
我的英语可能不好,请随意改进我的答案:)非常感谢您的帮助。我现在很清楚了,很高兴你明白了。
entr = []
for i in range(int(input())):
entry = []
for x in input().split():
entry.append(int(x))
entr.append(entry)