【问题标题】:creating many lists from list of lists从列表列表创建许多列表
【发布时间】:2018-11-14 15:42:40
【问题描述】:

我已经通过列表理解创建了一个列表列表,并想解开 这个列表列表通过迭代分成许多列表(每个列表的变量名也迭代),这可能吗? 至于我想要的究竟是什么意思:

listoflists = [[1,2,3],[2,3,4],[3,4,5,6,7],["a","b"]]

输出为:

list1=[1,2,3]
list2=[2,3,4]
list3=[3,4,5,6,7]
list4=["a","b"]

所以我不仅得到了未解开的列表,而且还得到了每个列表的名称,它使用 range(len(listoflists)) 进行迭代。

为了澄清我为什么需要这个,对于我的项目,我想编写一个 csv 文件,其中每一列都包含这些列表之一。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    考虑形成一个字典,其中您的单独列表被捕获在键值对中:

    >>> manylists = {f'list{i}': j for i, j in enumerate(listoflists, 1)}
    >>> manylists
    {'list1': [1, 2, 3], 'list2': [2, 3, 4],
     'list3': [3, 4, 5, 6, 7], 'list4': ['a', 'b']}
    

    这大致模仿了您尝试执行的“动态变量创建”,但不是所有这些列表都漂浮在本地命名空间中,而是全部封装在一个简洁的数据结构(字典)中,称为 @ 987654322@.

    您也可以简单地使用dict(enumerate(listoflists, 1)),其中生成的键将是从 1 开始并从那里升序的整数。

    【讨论】:

    • 好的,我已经想知道字典是否会是可行的方法,我是否能够访问每个字典元素(名称和列表)并将其写入 csv 文件?
    • 是的,但是在这种情况下,为什么不简单地遍历列表本身呢?你有明确的理由访问“list1”、“list2”作为这些名称吗?
    • 必须运行,但总的来说,考虑直接使用每个列表元素,而不是创建一个中间数据结构,如果这不是真的需要的话。 (例如,请参阅open('myfile.csv', 'w').writelines(...)
    • 粗略地说,我有很多包含传感器测量值的列表。对于其中一些传感器类型,我有很多传感器(意味着它们测量相同的东西),所以对于那些我创建了列表列表(来自我获得的数据的结构),但最后我想把它们写出来在每个列中。
    • 为了更清楚,因为有许多传感器(例如 20+ 温度)需要迭代。
    【解决方案2】:

    您可以使用简单的 for 在列表中进行迭代

    for list in listoflists:
    

    然后以你想要的格式打印出来。

    【讨论】:

      猜你喜欢
      • 2020-08-04
      • 1970-01-01
      • 2021-12-08
      • 2014-01-24
      • 1970-01-01
      • 2013-04-18
      • 2017-06-26
      • 1970-01-01
      • 2021-08-31
      相关资源
      最近更新 更多