我正在尝试理解代码,我不确定我是否正确:
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的新手
答案 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 = [[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。