如何将功能仅应用于所有子列表中一个索引处的一个项目,同时使子列表中的所有其他项目保持不变?
例如:
Original_List = [['a',1388547232,'b','c','d'],['y',13234542299,'d','c','d'],['z',1388547432,'b','c','d']]
我想将函数仅应用于索引1处的项目。例如,我正在尝试应用此函数
datetime.utcfromtimestamp(float(Unicode)).month
指向索引1的unicode号。
Desired_List = [['a',8,'b','c','d'],['y',9,'d','c','d'],['z',7,'b','c','d']]
这将在一个非常大的列表中完成,那么最快和最有效的方法是什么?
答案 0 :(得分:1)
应该进行简单的循环。
就地(Original_List
将被修改):
>>> Original_List = [['a',1388547232,'b','c','d'],['y',13234542299,'d','c','d'],['z',1388547432,'b','c','d']]
>>> for li in Original_List:
li[1] = datetime.utcfromtimestamp(float(li[1])).month
>>> Original_List
[['a', 1, 'b', 'c', 'd'], ['y', 5, 'd', 'c', 'd'], ['z', 1, 'b', 'c', 'd']]
新列表(效率不高,但不会修改Original_List
):
>>> Original_List = [['a',1388547232,'b','c','d'],['y',13234542299,'d','c','d'],['z',1388547432,'b','c','d']]
>>> Desired_List = ([li[0], datetime.utcfromtimestamp(float(li[1])).month] + li[2:] for li in Original_List)
现在,Desired_List
是一个生成器。如果你想要它,或者只是迭代它(更好)。