【问题标题】:List elements within a list列出列表中的元素
【发布时间】:2013-08-12 04:02:50
【问题描述】:

我从 CSV 文件生成了一个数据列表。它以列表中的列表格式出现:

Wind = [['284'], ['305'], ['335'], ['331'], ['318'], ['303'], ['294'], ['321'], ['324'], ['343']]

我需要作为常规列表列出。所以这是我解决这个问题的尝试:

i = 0
for ii in Wind:
    Wind[i] = Wind[i][i]
    i += 1
    return Wind

我的输出是:

return Wind
   ^
SyntaxError: 'return' outside function

【问题讨论】:

    标签: python list python-3.x


    【解决方案1】:

    您想要展平列表,这可以在 python 中使用列表推导(本质上是更短、更快的 for 循环版本)来完成。

    Wind = [x for y in Wind for x in y]
    

    使用嵌套 for 循环的等效代码是:

    newWind = []
    for y in Wind:
        for x in y:
            newWind.append(x)
    

    【讨论】:

      【解决方案2】:

      另一个选项,使用 itertools:

      import itertools
      newWind = list(itertools.chain.from_iterable(Wind))
      

      另一个使用 numpy:

      import numpy
      newWind = numpy.array(Wind).transpose()[0].tolist()
      

      还有一个使用列表推导式,假设内部列表中总是只有一个元素:

      newWind = [x[0] for x in Wind]
      

      还有一个使用地图做出相同假设的人:

      newWind = map(lambda x:x[0], Wind)
      

      任君挑选!

      【讨论】:

        【解决方案3】:

        导致语法错误是因为您在不在函数中时尝试执行 return 语句。如果只想打印Wind的内容,用print(Wind)代替return Wind

        【讨论】:

        • 他不想打印列表,他希望它不是二维的。
        • 是的,我意识到你回答的更好,但我只是指出了那个简单的语法错误。我还不能发布 cmets,否则我当然会这样做
        • 抱歉,我认为任何人都可以对问题发表评论。
        • 是的,我认为出于某种原因需要 50 个代表哈哈
        • 谢谢。是的,绝对是最初的问题。
        猜你喜欢
        • 1970-01-01
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多