2017-01-26 101 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