在这个例子中:
sorted_data = [files.data[ind] for ind in sort_inds]
请有人解释一下 for 循环背后的表达式是如何相关的或者它是如何工作的,谢谢。
在这个例子中:
sorted_data = [files.data[ind] for ind in sort_inds]
请有人解释一下 for 循环背后的表达式是如何相关的或者它是如何工作的,谢谢。
它被称为列表理解
换句话说
sorted_data = [files.data[ind] for ind in sort_inds]
相当于:
sorted_data = []
for ind in sort_inds:
sorted_data.append(files.data[ind])
使用理解,它的可读性更高
好的,这是一个简单的例子:
说我有一个整数列表:
nums = [1,2,3]
我这样做:
[i**2 for i in nums]
它将输出:
[1, 4, 9]
这相当于: for i in nums: list.append(i**2)
因为它遍历列表并对列表中的每个项目进行平方
另一个例子:
说我有一个这样的字符串列表:
list1 = ['hey, jim','hey, pam', 'hey dwight']
我这样做:
[phrase.split(',') for phrase in list1]
这将输出此列表:
[['hey', ' jim'], ['hey', ' pam'], ['hey dwight']]
这也是等价的:
for phrase in list1:
new_phrase = phrase.split(',')
list.append(new_phrase)
它通过并从每个项目中列出了一个列表,但它在每个项目上使用了拆分
它基本上是一个压缩的 for 循环,而不是使用append()
它只是创建列表!。它更具可读性并且需要更少的行
在这里了解更多
这意味着对于这种情况下存在于 sort_inds 中的 ind 的每个项目,将其作为参数传递给函数 files.data[ind]。
将结果保存在列表中(sorted_data)