[英]How to modify specific item in list of list using list comprehension in python
我只是想知道是否有更好的方法使用列表理解來修改列表中的特定項目? 在下面的示例中,我將對列表內的每個列表的第二項進行平方運算,但是,我不想消除內部列表理解。
l = [
[1,2,3,],
[4,5,6,],
[7,8,9,],
]
nl = [[num**2 if i==1 else num for i, num in enumerate(x)] for x in l]
print nl
不知道如何保持內在理解,但是您可以執行以下操作:
def square_idx_one(sl):
sl[1] **= 2
return sl
l = [
[1,2,3,],
[4,5,6,],
[7,8,9,],
]
nl = [square_idx_one(sl) for sl in l]
print (nl)
結果:
[[1, 4, 3], [4, 25, 6], [7, 64, 9]]
但是,如果您要修改原始文件,我認為for循環可能會降低該解決方案的性能,更不用說內存了
就您而言,
print [[x, y**2, z] for x, y, z in l]
會做這項工作,並更明確地說出正在發生的事情。 一般而言,
from itertools import izip
p = (1, 2, 1) # element 0 power 1
# # element 1 power 2
# # element 2 power 1
# ...
print [[x**power for x, power in izip(row, p)] for row in l]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.