[英]List Comprehension, For-Loop give differing results
from sklearn.datasets import load_iris
data = load_iris()
iris = pd.DataFrame(data.data,columns = data.feature_names)
iris['target_names'] = [data.target_names[i] for i in data.target]
for i in data.target: iris['target_names'][i] = data.target_names[i]
为什么第一位代码与第二位代码给出不同的结果?
iris['target_names'] = [data.target_names[i] for i in data.target]
生成元素data.target_names[i]
for i in data.target:
iris['target_names'][i] = data.target_names[i]
引用所有相同的片段,但将它们存储到:
iris['target_names'][i]
这将产生与理解相同的唯一方法是,如果iris['target_names']
是相同长度的列表data.target
和data.target
包含等效的range(len(data.target))
。
要构建与循环相同的理解(在2中), iris['target_names']
可能需要是dict
。
iris['target_names'] = {i: data.target_names[i] for i in data.target}
如同:
for i in data.target:
iris['target_names'][i] = data.target_names[i]
要构建与理解(在1中)相同的循环,您将需要追加到类似以下的list
:
iris['target_names'] = []
for i in data.target:
iris['target_names'].append(data.target_names[i])
如同:
iris['target_names'] = [data.target_names[i] for i in data.target]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.