以下代码中的for循环有什么作用?

时间:2019-07-09 17:41:25

标签: python scikit-learn

我正在尝试学习scikit学习(sklearn)。以下是尝试从虹膜数据集中使用statsmodels.api创建数据框的代码的一部分。 但是我不确定for循环的工作方式以及sci-kit中iris.target_names[x]target的数据类型。有人可以解释吗?

from sklearn import datasets ## Get dataset from sklearn

## Import the dataset from sklearn.datasets
iris = datasets.load_iris()

## Create a data frame from the dictionary
species = [iris.target_names[x] for x in iris.target]

2 个答案:

答案 0 :(得分:2)

这在功能上等同于以下内容:

species = []
for x in iris.target:
    species.append(iris.target_names[x])

实质上,它是在可迭代元素的每个元素x上应用一个函数,并从结果中创建一个列表。

以这种方式对列表执行操作的速度比前面提到的方法稍快,并且更具可读性(在我看来)。

答案 1 :(得分:1)

这是列表理解,确实如此

        Assert.assertThat(response.getStatusCode(), Matchers.equalTo(HttpStatus.OK));
        String jsonBody = response.getBody();
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$[0].expiry", Matchers.equalTo("2080-06-26T06:00:00.000+0000")));
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$[0].activation", Matchers.equalTo("2019-06-26T22:33:14.849+0000")));
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$[0].permitId", Matchers.equalTo("CS383UA")));
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$[0].plateNumber", Matchers.equalTo("VGZ05")));
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$[0].plateState", Matchers.equalTo("AB")));

species = [] for x in iris.target: val = iris.target_names[x] species.append(val) for列中获取值,并分配给iris.target,然后使用此xx列中获取值并将此值附加在“物种”列表上。

因此它将值iris.target_names转换为值target