【问题标题】:Python list comprehension: add values from a list into multiple separate listsPython列表理解:将列表中的值添加到多个单独的列表中
【发布时间】:2021-09-29 15:48:00
【问题描述】:

我想通过列表理解将值从单个列表添加到多个列表中。特征列表中有 4 个值,它们应该进入 4 个单独的列表。 我的代码:

  features = features_time_domain(values, column_name)
  feature_lists =[mean_list, std_list, max_list, min_list]
  [x.append(y) for x,y in zip(feature_lists, features)]

预期的输出应该是这样的:

'x-axis_mean': [[0.010896254499999957,-0.01702540899999986 ,0.24993333400000006 ,-0.2805791479999999, -0.7675066368], 'x-axis_std': [4.100886585107956,3.8269951001730607, 4.19064980513631, 3.7522815775487643, 3.5302154102620498], 'x-axis_max': [6.2789803,7.668256,  11.604536, 9.384419, 7.5865335], 'x-axis_min': [-8.430995,-8.662541, -7.8861814,7.6546354,-5.175732 ]

但我明白了:

'x-axis_mean': [[0.010896254499999957, 4.100886585107956, 6.2789803, -8.430995], [-0.01702540899999986, 3.8269951001730607, 7.668256, -8.662541], [0.24993333400000006, 4.19064980513631, 11.604536, -7.8861814], [-0.7675066368, 3.7522815775487643, 9.384419, -7.6546354], [-0.2805791479999999, 3.5302154102620498, 7.5865335, -5.175732]], 'x-axis_std': [], 'x-axis_max': [], 'x-axis_min': []

我查看了其他帖子并尝试做与他们类似的事情,但我的答案是关闭的。我可以做这样的事情,但它看起来很丑:

mean_list.append[features[0]]
std_list.append[features[1]]
max_list.append[features[2]]
min_list.append[features[3]]

【问题讨论】:

  • 您使用 listcomps 纯粹是为了产生副作用,这是不好的做法(因为它会导致这样的事情)。
  • 请缩进代码并详细说明问题
  • 所以我应该坚持我更“丑陋”的方法?
  • 请参阅我的回答,了解我认为您应该做什么。不过,一般来说,listcomps 是用于函数式的东西,你正在改变数据然后返回它,而不是为了副作用。 (正如您所注意到的,您想出的 listcomp 不起作用)
  • 太好了,感谢您的反馈

标签: python list list-comprehension


【解决方案1】:

显然这是可行的:

mean_list.append[features[0]]
std_list.append[features[1]]
max_list.append[features[2]]
min_list.append[features[3]]

这是简单的、声明性的、清晰的,尽管这样会更清楚:

mean, std, mx, mn = features
mean_list.append(mean)
max_list.append(mx)
std_list.append(std)
min_list.append(mn)

但是,如果您的数据在字典中,那么这样的事情就很清楚了:

results = dict(mean=[], std=[], mx=[], mn=[])
for features in get_features():
    for i, k in enumerate(results):
        results[k].append(features[i])

【讨论】:

    猜你喜欢
    • 2012-04-07
    • 2012-02-13
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2016-09-10
    • 2014-11-06
    相关资源
    最近更新 更多