【问题标题】:Remove first sub-list in a list (nested lists)删除列表中的第一个子列表(嵌套列表)
【发布时间】:2022-11-21 03:25:38
【问题描述】:

你好!

我是 python 的初学者,我对嵌套列表以及如何分离它们有疑问。

假设我有一个如下所示的 txt 文件:

------------------------------
one 1
2 3 hi hello 
2 3 hi
-----------------------------
two 2
2 3 hi
2 3 hi bye bye
------------------------------

然后我自己设法创建了一个包含较小列表的大列表:

Big_list = [[---------]['one', 1],[2,3,'hi','hello'],[2,3,'hi'],[-- --------]['二', 2],[2,3,'嗨'],[2,3,'嗨','再见','再见]

现在我有一个关于如何获得这样的结果的问题:

Big_list = [[['one', 1],2,3,'hi','hello'],[['one', 1],2,3,'hi'],[['two', 2 ],2,3,'嗨'],[['二', 2]2,3,'嗨','再见','再见]]]

我试过这样做:

for lists in big_list:
        for index in lists:
            if len(lists) == 1: 
                break
            else:
                if lists [0][0] == str:
                    save = []
                    save.append(lists[0]
                    del(lists[0])
                    break
                else:
                    separated_schedule.append(lists)
                    break

如果长度是包含以下内容的列表的一个:'------',它应该跳过该列表。

然后,如果其中一个小列表中的第一个字符是 str 我想分离/取出整个列表并单独保存。

然后我想从大名单中删除那个小名单。

我想在“相应行”中每个列表的开头添加保存的列表,并可能将它们保存在新列表中?

这就是我卡住的地方!

【问题讨论】:

    标签: list for-loop if-statement nested list-comprehension


    【解决方案1】:

    如果您已经拥有由较小列表组成的 Big_list,您可以执行以下操作:

    Big_list = [
        ["----------"],
        ["one", 1],
        [2, 3, "hi", "hello"],
        [2, 3, "hi"],
        ["----------"],
        ["two", 2],
        [2, 3, "hi"],
        [2, 3, "hi", "bye", "bye"],
    ]
    
    
    out, flag, current = [], False, None
    for l in Big_list:
        if len(l) == 1 and "---" in l[0]:
            flag = True
        elif flag:
            current = l
            flag = False
        else:
            out.append([current, *l])
    
    print(out)
    

    这打印:

    [
        [["one", 1], 2, 3, "hi", "hello"],
        [["one", 1], 2, 3, "hi"],
        [["two", 2], 2, 3, "hi"],
        [["two", 2], 2, 3, "hi", "bye", "bye"],
    ]
    

    编辑:用新的输入更新了答案。

    【讨论】:

    • 你好!感谢你能这么快回复!实际上,大列表包含长度不同的较小列表。 (我编辑了问题的描述)!因此我不能使用 if 语句来判断列表的长度是否为 2!
    • @Ella 我已经更新了我的答案。
    猜你喜欢
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    相关资源
    最近更新 更多