删除列表列表中元素的前两个字符

时间:2017-11-17 12:03:04

标签: python

假设我有以下列表清单:

final_list = [[1,'pppizza',3,4],[1,'mmmonkey',9,10],[1,'dddoublerainbow',8,2]]

现在我需要删除每个列表的第二个元素的前2个字符,结果将是:

final_list = [[1,'pizza',3,4],[1,'monkey',9,10],[1,'doublerainbow',8,2]]

3 个答案:

答案 0 :(得分:1)

使用双重列表推理:

final_list = [[x if hasattr(x, '__len__') and i == 1 else x[2:] for i, x in enumerate(y)] for y in my_list]

这将修剪第二个元素的前2个元素,即使该元素不是字符串

如果只需要字符串,则语句变为:

final_list = [[x if type(x) == str and i == 1 else x[2:] for i, x in enumerate(y)] for y in my_list]

答案 1 :(得分:1)

final_list = [[x[2:] if i==1 else x for i, x in enumerate(y)] for y in my_list]

完整答案:

final_list = []
for y in my_list:
    l = []
    for i, x in enumerate(my_list):
    if i==1:  #2nd element in the list
        l.append(x[2:])  # Append a string starting from the 3rd letter to the end
    else:
        l.append(x) . # Just append the element at x
    my_list.append(l)  # Append the list l to my_list
print(my_list)

答案 2 :(得分:1)

不需要从头开始重建整个列表只是为了在一行理解中完成,同时不必要地迭代内部列表。只需修改需要修改的元素:

for lst in final_list:
    lst[1] = lst[1][2:]