如何解决Python:如何通过减少行数来优化列表结果?这个问题已经用zip回答了
我有以下列表:
rows= ['Azuay','10,658','195','12','Bolívar','2,111','66','Cañar',110','83','7','Carchi','3,053','104','1','Chimborazo',516','315','119','Cotopaxi','4,575','281','61','El Oro','6,477','466','185','Esmeraldas',271','216','51','galápagos','227','Guayas','22,263','1,737',651','Imbabura',773','170','Loja',227','222','44','Los Ríos',017','342','237','Manabí','11,284',025',033','Morona Santiago',008','22','0','Napo',440','74','2','Orellana',956','53','17','Pastaza',258','60','15','Pichincha','59,789','242','Santa Elena',738','368','274','Santo Domingo de los Tsáchilas','5,293','361','116','Sucumbíos',763','92','Tungurahua',119','276','223','Zamora Chinchipe',580','1']
I want to convert it to :
[['Azuay','12'],['Bolívar',['Cañar','7'],['Carchi','1'],['Chimborazo','119'],['Cotopaxi','61'],['Esmeraldas','51'],['galápagos',['Guayas',651'],['Imbabura',['Loja','44'],['Manabí',033'],['Napo','2'],['Orellana','17'],['Pastaza','15'],['Pichincha','242'],['Sucumbíos',['Tungurahua','223'],['Zamora Chinchipe','1']]
我正在使用此代码(在下面进行检查)以获得此结果;但是,我想对其进行优化。
dict_kv=[]
for i in range(0,len(rows)):
if (rows[i].strip().isalpha()):
dict_kv.append([rows[i],rows[i+1],rows[i+2],rows[i+3]])
dict_kv.append([rows[92],rows[93],rows[94],rows[95]]) s
pprint(dict_kv)
解决方法
这是一种常见的模式,itertools recipes中有一个条目。
def grouper(iterable,n,fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG',3,'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return zip_longest(*args,fillvalue=fillvalue)
您将其用作:
result = grouper(rows,4)
,
您可以使用以下简单的list comprehension
:
rows= ['Azuay','10,658','195','12','Bolívar','2,111','66','Cañar',110','83','7','Carchi','3,053','104','1','Chimborazo',516','315','119','Cotopaxi','4,575','281','61','El Oro','6,477','466','185','Esmeraldas',271','216','51','Galápagos','227','Guayas','22,263','1,737',651','Imbabura',773','170','Loja',227','222','44','Los Ríos',017','342','237','Manabí','11,284',025',033','Morona Santiago',008','22','0','Napo',440','74','2','Orellana',956','53','17','Pastaza',258','60','15','Pichincha','59,789','242','Santa Elena',738','368','274','Santo Domingo de los Tsáchilas','5,293','361','116','Sucumbíos',763','92','Tungurahua',119','276','223','Zamora Chinchipe',580','1']
rows = [rows[x:x+4] for x in range(0,len(rows),4)]
print(rows)
输出:
[['Azuay','12'],['Bolívar',['Cañar','7'],['Carchi','1'],['Chimborazo','119'],['Cotopaxi','61'],['El Oro','185'],['Esmeraldas','51'],['Galápagos',['Guayas',651'],['Imbabura',['Loja','44'],['Los Ríos','237'],['Manabí',033'],['Morona Santiago','0'],['Napo','2'],['Orellana','17'],['Pastaza','15'],['Pichincha','242'],['Santa Elena','274'],['Santo Domingo de los Tsáchilas','116'],['Sucumbíos',['Tungurahua','223'],['Zamora Chinchipe','1']]
,
使用numpy
import numpy as np
rows= ['Azuay','1']
r = np.array(rows).reshape(-1,4).tolist()
输出:
[['Azuay','1']]
,
df <- df %>%
mutate(
`TE-iL` = case_when(`HB>TE-iL` == 1 ~ 0),`TE-iL^` = case_when(`HB>TE-iL` == 1 ~ 0)
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。