如何压缩多个但数量未知的列表?
How to zip multiple but an unknown number of lists?
我有多个列表,我想压缩它们,如下例所示:
d = {}
clients = ["client_1","client_2","client_3",...] # n number of client
# every client has a list of element :
d["acc_list" + client] = [1, 2, 3, ...]
所以我怎么能在不知道客户端数量的情况下压缩它们呢:
acc_clients = zip(d["acc_list" + "client_0"],d["acc_list" + "client_2"],d["acc_list" + "client_3"], .... )
所以你已经在 client_names
中有了 client
部分,所以你可以列出它们:
client_d = [d["acc_list" + client ] for client in client_names]
现在zip
他们一起你可以申请到*
运算符到列表中:
acc_clients = zip(*[d["acc_list" + client ] for client in client_names])
或者正如@wwii 指出的那样,我们不需要先让 list comprehension
迭代 client_names
然后让 *
迭代结果,我们可以生成器表达式:
acc_clients = zip(*(d["acc_list" + client ] for client in client_names))
我有多个列表,我想压缩它们,如下例所示:
d = {}
clients = ["client_1","client_2","client_3",...] # n number of client
# every client has a list of element :
d["acc_list" + client] = [1, 2, 3, ...]
所以我怎么能在不知道客户端数量的情况下压缩它们呢:
acc_clients = zip(d["acc_list" + "client_0"],d["acc_list" + "client_2"],d["acc_list" + "client_3"], .... )
所以你已经在 client_names
中有了 client
部分,所以你可以列出它们:
client_d = [d["acc_list" + client ] for client in client_names]
现在zip
他们一起你可以申请到*
运算符到列表中:
acc_clients = zip(*[d["acc_list" + client ] for client in client_names])
或者正如@wwii 指出的那样,我们不需要先让 list comprehension
迭代 client_names
然后让 *
迭代结果,我们可以生成器表达式:
acc_clients = zip(*(d["acc_list" + client ] for client in client_names))