如何从python中的列表列表中删除列表元素

时间:2017-10-11 23:13:35

标签: python list

我试图从python中的列表列表中删除第三个和第四个列表。

我的清单如下:

List =  [
            ['101', 'Dashboard', '1', '1'],
            ['102', 'Potential Cstomer', '1', '1'],
            ['102-01', 'Potential Cstomer', '1', '1'],
            ['102-02', 'Potential Cstomer Activity', '1', '1']
        ]

删除列表的第三和第四个元素后,我希望如下:

NewList =  [
            ['101', 'Dashboard'],
            ['102', 'Potential Cstomer'],
            ['102-01', 'Potential Cstomer'],
            ['102-02', 'Potential Customer Activity']
        ]

我尝试了下面的代码,但没有做任何改动。

    NewList     = [list(element) for element in List if element[0] or element[1]]

    print NewList

如何更改当前代码以达到预期效果?感谢。

4 个答案:

答案 0 :(得分:6)

切片 列表理解中的每个嵌套列表。切片表示法从索引0开始,并在1处停止,即[0, 2)

NewList = [element[:2] for element in List]

如果未指定起始索引,则会将None视为与None出现在第一个:之前的列表的起始索引相同。

同样:

NewList = [element[slice(None, 2)] for element in List] # More verbose

在Python 3中,您可以使用扩展解包来实现应用'splat'运算符*的相同功能:

NewList = [elements for *elements, _, _ in List]

答案 1 :(得分:1)

这个怎么样:

 for s in List:
    del s[3]
    del s[2]

删除到位。

答案 2 :(得分:1)

此解决方案使用负索引来允许任意长度的子列表,同时保持两个尾随数字的原始条件。

List =  [
        ['101', 'Dashboard', '1', '1'],
        ['102', 'Potential Cstomer', '1', '1'],
        ['102-01', 'Potential Cstomer', '1', '1'],
        ['102-02', 'Potential Cstomer Activity', '1', '1']
    ]
new_final_list = [i[:-2] for i in List]
for i in new_final_list:
   print(i)

输出:

['101', 'Dashboard'], 
['102', 'Potential Cstomer']
['102-01', 'Potential Cstomer']
['102-02', 'Potential Cstomer Activity']

答案 3 :(得分:-1)

请参考下面的代码:

Names = [["Tom", 32, 12], ["John", 54, 16], ["James", 52, 15]]
Names_new = []

for i in Names:
    # print(i + )
    del i[0]
    Names_new.append(i)

print(Names_new)