2017-01-26 70 views
-2

我想了解我不知道一个代码,如果我是正确的:困惑线

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

+1

你为什么不问作者? – TigerhawkT3

+0

你想在这里做什么?该代码的预期输出是什么? –

+0

@ TigerhawkT3我不知道作者是谁 – Akshay

回答

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] 

各种接收的列表。

现在[int(len(left_lines)/2)]部分将一个索引放入收到的列表中。索引是行数除以2(并转换为int)。

所以这段代码是做什么的,只要你有x行就是从每行的最小值到最大值排序第二个数字,并给出中间值。

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

+0

是的,真的,我的坏!对Python很新颖 – Akshay

1
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

该代码清单意味着你嵌套宣布名单列表。

测试

sorted()是用于排序目的的功能。

[line[1]]将返回[310, 319, 318, 406, 317, 322],[423, 425, 425, 357, 419, 414]

for line in left_lines名单,这将贯穿整个列表重复以连续的方式

[int(len(left_lines)/2)] int(len())转换列表长度为int

(left_lines)/2将由2

0
划分lenght
[line[1] for line in left_lines] 

这被称为列表压缩。

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

现在排序是建立在函数返回排序列表(你也可以使用这种方法排序元组)。

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