在Python中将数据有效地过滤为多个变量

问题描述

如何在不重复浏览两次压缩列表的情况下更有效地进行跟踪:

/home/site/wwwroot/

解决方法

Pythonic少一些:

x = []
y = []
for item1,item2 in zip(foo,bar):
    x.append((item1['a'],item2))
    y.append(item2.replace(item1['b'],''))
,

通常,您可以使用生成器表达式将多个值输出为元组,然后将元组的输出序列zip分成单独的序列,以便可以将它们解包为单独的变量。

因此,例如:

x = [i + 1 for i in lst]
y = [i + 2 for i in lst]

您可以这样做:

x,y = zip(*((i + 1,i + 2) for i in lst))

在这种情况下,xy将成为元组,因此,如果您需要xy作为实际列表,则可以map输出到list构造函数的序列:

x,y = map(list,zip(*((i + 1,i + 2) for i in lst)))

因此,您问题中的陈述可以重写为:

x,zip(*(((item1['a'],item2),item2.replace(item1['b'],'')) for item1,bar))))

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...