假设我有以下列表清单:
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]]
答案 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:]