Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用列表理解和生成器创建列表_Python_List Comprehension - Fatal编程技术网

Python 如何使用列表理解和生成器创建列表

Python 如何使用列表理解和生成器创建列表,python,list-comprehension,Python,List Comprehension,我正在使用pyad库从active directory检索一些数据。执行查询后,我希望使用检索到的数据创建一个数据帧: import pyad import pyad.adquery as query pyad.set_defaults(ldap_server=xxxxxx) q = query.ADQuery() q.execute( attributes=[attribute1,attribute2,attribute3] where_clause=xxx base

我正在使用pyad库从active directory检索一些数据。执行查询后,我希望使用检索到的数据创建一个数据帧:

import pyad
import pyad.adquery as query

pyad.set_defaults(ldap_server=xxxxxx)
q = query.ADQuery()
q.execute(
    attributes=[attribute1,attribute2,attribute3]
    where_clause=xxx
    base_dn=xxxxx
)
运行查询后,我将以以下方式创建数据帧:

parameter1 = []
parameter2 = []
parameter3 = []

for x in q.get_results(): #IT'S A GENERATOR
    parameter1.append(x['attribute1'])
    parameter2.append(x['attribute2'])
    parameter3.append(x['attribute3'])

df = pd.Dataframe({'P1':parameter1, 'P2':parameter2, 'P3':parameter3})
我创建数据帧的方式并不干净优雅,有没有办法改进这段代码?如果只是一个参数,我会:

df = pd.Dataframe({'P1': [x['parameter1'] for x in q.get_results()]})

但是q是一个生成器,因此如果不再次运行方法q.execute(…)

将生成器移开,我就无法运行三个列表理解

results = list(q.get_results())
那么你应该能够:

df = pd.Dataframe({'P1': [x['parameter1'] for x in results], 'P2': [x['parameter2'] for x in results], ...})

把发电机弄到一边去

results = list(q.get_results())
那么你应该能够:

df = pd.Dataframe({'P1': [x['parameter1'] for x in results], 'P2': [x['parameter2'] for x in results], ...})