如何将功能仅应用于所有子列表中子列表中的一个项目?

时间:2014-01-27 02:25:45

标签: python list function unicode sublist

如何将功能仅应用于所有子列表中一个索引处的一个项目,同时使子列表中的所有其他项目保持不变?

例如:

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']]

这将在一个非常大的列表中完成,那么最快和最有效的方法是什么?

1 个答案:

答案 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是一个生成器。如果你想要它,或者只是迭代它(更好)。