gpt4 book ai didi

python - 理解这一行 : list_of_tuples = [(x, y) for x, y, label in data_one]

转载 作者:太空狗 更新时间:2023-10-29 20:32:39 24 4
gpt4 key购买 nike

如您所知,我是一名初学者,正在尝试了解编写此函数的“Pythonic 方式”是基于什么构建的。我知道其他线程可能包含对此的部分答案,但我不知道要寻找什么,因为我不明白这里发生了什么。

这一行是我 friend 发给我的代码,用来改进我的代码:

import numpy as np

#load_data:
def load_data():
data_one = np.load ('/Users/usr/... file_name.npy')
list_of_tuples = []
for x, y, label in data_one:
list_of_tuples.append( (x,y) )
return list_of_tuples

print load_data()

“改进”版本:

import numpy as np

#load_data:
def load_data():
data_one = np.load ('/Users/usr.... file_name.npy')
list_of_tuples = [(x,y) for x, y, label in data_one]
return list_of_tuples

print load_data()

我想知道:

  1. 这里发生了什么?
  2. 这是更好还是更坏的方式?因为它是“Pythonic”我认为它不会使用其他语言,所以也许最好习惯更通用的方式?

最佳答案

list_of_tuples = [(x,y) for x, y, label in data_one]

(x, y) 是一个 tuple <-- 链接教程。

这是一个列表 comprehension

    [(x,y) for x, y, label in data_one]
# ^ ^
# | ^comprehension syntax^ |
# begin list end list

data_one 是一个 iterable并且是列表理解所必需的。在幕后,它们是循环,必须迭代某些东西。

x, y, label in data_one 告诉我可以从 data_one 可迭代对象传递的每个元素中“解压”这三个项目。这就像 for 循环的局部变量,它会在每次迭代时发生变化。

总的来说,这表示:

制作一个看起来像 (x, y) 的元组列表,其中我从可迭代的 data_one 传递的每个项目中得到 x, y, and label 。将每个 xy 放入名为 list_of_tuples 的列表中的一个元组中。是的,我知道我“打开”了 label 并且从未使用过它,我不在乎。

关于python - 理解这一行 : list_of_tuples = [(x, y) for x, y, label in data_one],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38229059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com