来自元组生成器的两个不同列表

来自元组生成器的两个不同列表

我有一个生成器,它产生一个元组和一个从生成器收集信息并创建两个单独列表的函数:

labels = []
dataset = []
for data, label in list_data(folder):
    dataset.append(data)
    labels.append(label)
return dataset, labels

我不确定我是否在这里没有过度设计,但感觉这不是解决问题的最 Python 方式。我尝试了一些列表理解的想法,但总是导致语法错误。

或者也许它是最好的解决方案,因为它确保了可读性?

答案1

是的,有一种更 Pythonic 的方法来实现这种精确的交互:压缩

dataset, labels = zip(*list_data(folder))

星号 ( *) 很重要,需要zip告诉解压缩数据元组。然后在您的函数中,要么只返回zip(*list_data(folder))(不需要 for 循环或临时变量,要么简单地使用内联,而不需要函数。

供将来参考,请注意这更像是一个编程问题,因此最好在stackoverflow.com

相关内容