如何切割Python列表,以便将列移动为单独的元素列?

d3p*_*3pd 11 python list slice

我有以下表格的列表:

[[0, 5.1, 3.5, 1.4, 0.2],
 [0, 4.9, 3.0, 1.4, 0.2],
 [0, 4.7, 3.2, 1.3, 0.2],
 [1, 4.6, 3.1, 1.5, 0.2],
 [1, 5.0, 3.6, 1.4, 0.2],
 [1, 5.4, 3.9, 1.7, 0.4],
 [1, 4.6, 3.4, 1.4, 0.3]]
Run Code Online (Sandbox Code Playgroud)

我想切出第一列并将其作为新元素添加到每行数据(因此在列表中的每个奇数位置),将其更改为以下形式:

[[5.1, 3.5, 1.4, 0.2], [0],
 [4.9, 3.0, 1.4, 0.2], [0],
 [4.7, 3.2, 1.3, 0.2], [0],
 [4.6, 3.1, 1.5, 0.2], [1],
 [5.0, 3.6, 1.4, 0.2], [1],
 [5.4, 3.9, 1.7, 0.4], [1],
 [4.6, 3.4, 1.4, 0.3], [1],]
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

到目前为止,我已通过以下方式提取了必要的信息:

targets = [element[0] for element in dataset]
features = dataset[1:]
Run Code Online (Sandbox Code Playgroud)

SIs*_*lam 5

尝试索引,然后得到扁平列表 - 我使用列表理解进行展平.

>>>l=[[0, 5.1, 3.5, 1.4, 0.2],
 [0, 4.9, 3.0, 1.4, 0.2],
 [0, 4.7, 3.2, 1.3, 0.2],
 [1, 4.6, 3.1, 1.5, 0.2],
 [1, 5.0, 3.6, 1.4, 0.2],
 [1, 5.4, 3.9, 1.7, 0.4],
 [1, 4.6, 3.4, 1.4, 0.3]]
>>>[[i[1:],[i[0]]] for i in l]#get sliced list of lists
>>>[[[5.1, 3.5, 1.4, 0.2], [0]], [[4.9, 3.0, 1.4, 0.2], [0]], [[4.7, 3.2, 1.3, 0.2], [0]], [[4.6, 3.1, 1.5, 0.2], [1]], [[5.0, 3.6, 1.4, 0.2], [1]], [[5.4, 3.9, 1.7, 0.4], [1]], [[4.6, 3.4, 1.4, 0.3], [1]]]
>>>d=[[i[1:],[i[0]]] for i in l]
>>>[item for sublist in d for item in sublist]#flatten list d
>>>[[5.1, 3.5, 1.4, 0.2], [0], [4.9, 3.0, 1.4, 0.2], [0], [4.7, 3.2, 1.3, 0.2], [0], [4.6, 3.1, 1.5, 0.2], [1], [5.0, 3.6, 1.4, 0.2], [1], [5.4, 3.9, 1.7, 0.4], [1], [4.6, 3.4, 1.4, 0.3], [1]]
Run Code Online (Sandbox Code Playgroud)

只是oneliner替代 -

[item for sublist in [[i[1:],[i[0]]] for i in l] for item in sublist] #Here l is that list
Run Code Online (Sandbox Code Playgroud)

  • 这很接近,但你需要压扁结果. (2认同)

Ahs*_*que 2

尝试这个:

from itertools import chain
print list(chain(*[list((element[1:],[element[0]])) for element in a]))
Run Code Online (Sandbox Code Playgroud)

输出:

[[5.1, 3.5, 1.4, 0.2], [0], [4.9, 3.0, 1.4, 0.2], [0],
 [4.7, 3.2, 1.3, 0.2], [0], [4.6, 3.1, 1.5, 0.2], [1], 
 [5.0, 3.6, 1.4, 0.2], [1], [5.4, 3.9, 1.7, 0.4], [1], 
 [4.6, 3.4, 1.4, 0.3], [1]]
Run Code Online (Sandbox Code Playgroud)