0

在这个例子中:

sorted_data = [files.data[ind] for ind in sort_inds]

请有人解释一下 for 循环背后的表达式是如何相关的或者它是如何工作的,谢谢。

4

3 回答 3

4

它被称为列表理解

换句话说

sorted_data = [files.data[ind] for ind in sort_inds]

相当于:

sorted_data = []
for ind in sort_inds:
    sorted_data.append(files.data[ind])

使用理解,它的可读性更高

于 2013-10-17T23:00:52.613 回答
2

好的,这是一个简单的例子:

说我有一个整数列表:

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()它只是创建列表!。它更具可读性并且需要更少的行

在这里了解更多

于 2013-10-17T23:02:42.037 回答
0

这意味着对于这种情况下存在于 sort_inds 中的 ind 的每个项目,将其作为参数传递给函数 files.data[ind]。

将结果保存在列表中(sorted_data)

于 2013-10-17T23:02:30.680 回答