困惑的代码行

时间:2017-01-26 06:32:34

标签: python

我正在尝试理解代码,我不确定我是否正确:

left_lines = [[310, 319, 318, 406, 317, 322],[423, 425, 425, 357, 419, 414]]
test = sorted([line[1] for line in left_lines])[int(len(left_lines)/2)]

这怎么只给我一个号码?它是否试图找到left_lines[1]中的最小数字?

更新

参考:http://sdc.autojazari.com/lane-detection/

更新2

我是Python的新手

3 个答案:

答案 0 :(得分:1)

让我们分开吧。

    ('A','A') ('A','B') ('A','C') ('B','A') ... ('C','C')
Bob     0         1         0         1             0
John    1         0         0         0             0
Mike    0         0         0         0             1

为您提供每个子列表中的第二个数字(您将子列表称为一行)

In [3]: [line[1] for line in left_lines]
Out[3]: [319, 425]

对收到的列表进行排序。

现在sorted([line[1] for line in left_lines]) Out[4]: [319, 425] 部分将索引放入收到的列表中。索引是行数除以2(并转换为int)。

所以这段代码的作用是,只要你有[int(len(left_lines)/2)]行,就是从每一行开始从最小到大的顺序排序第二个数字,并给出中间值。

也许这是所有行的所有第二项的中位数。

答案 1 :(得分:1)

x

left_lines

此代码是列表的含义,表示您已声明嵌套列表。

测试

left_lines = [[310, 319, 318, 406, 317, 322],[423, 425, 425, 357, 419, 414]] test = sorted([line[1] for line in left_lines])[int(len(left_lines)/2)] 是用于排序目的的函数。

sorted()将返回[line[1]]

列表

[310, 319, 318, 406, 317, 322],[423, 425, 425, 357, 419, 414]这将以顺序方式遍历整个列表

for line in left_lines将列表长度转换为int

[int(len(left_lines)/2)] int(len())将长度除以2

答案 2 :(得分:0)

[line[1] for line in left_lines]

这称为列表压缩。

上面一行的输出将是列表left_lines [319,425]的每个子列表的第二个元素(索引1)。

现在,sorted是在函数中构建的,它返回排序列表(您也可以使用此方法对元组进行排序)。

sorted([line[1] for line in left_lines])=[319,425]

len是一个内置函数,用于查找字符串,元组或列表的长度。所以

int(len(left_lines)/2)=1

最后,

sorted([line[1] for line in left_lines])[int(len(left_lines)/2)]=[319,425][1]

表示列表的第二个元素,即425。

因此测试等于425。