Python 如何转换大列表的一部分并将其划分为更小、更简单的列表?

Python 如何转换大列表的一部分并将其划分为更小、更简单的列表?,python,python-3.x,Python,Python 3.x,我有一个很大的列表,这个列表的一个例子是: list = ['1', '2', '3', 'x', '4', '5', '6', 'x', '7', '8', '9', 'x'] 我正在努力从这个由值“x”分隔的总列表值中创建单独的列表。 例如,我需要将上面的列表转换为: list1 = ['1', '2', '3',] list2 = ['4', '5', '6',] list3 = ['7', '8', '9',] 感谢您提供的帮助。您可以使用临时列表存储“x”之间的值,然后使用条件查找

我有一个很大的列表,这个列表的一个例子是:

list = ['1', '2', '3', 'x', '4', '5', '6', 'x', '7', '8', '9', 'x']
我正在努力从这个由值“x”分隔的总列表值中创建单独的列表。 例如,我需要将上面的列表转换为:

list1 = ['1', '2', '3',]
list2 = ['4', '5', '6',]
list3 = ['7', '8', '9',]

感谢您提供的帮助。

您可以使用临时列表存储“x”之间的值,然后使用条件查找“x”,并将列表加载到新的列表集中

my_list = ['1', '2', '3', 'x', '4', '5', '6', 'x', '7', '8', '9', 'x']
new_list = []

temp_list = []
for value in my_list :
    if value != 'x':
        temp_list.append(value)
    else:
        new_list.append(temp_list)
        temp_list = []

for sub_list in new_list:
    print(sub_list)
结果:

['1', '2', '3']
['4', '5', '6']
['7', '8', '9']
只是为了好玩这里是一个版本使用各种各样的好玩的方法,但我更难遵循

test_list = ['1', '2', '3', 'x', '4', '5', '6', 'x', '7', '8', '9', 'x']
idx_list = [idx + 1 for idx, val in enumerate(test_list) if val == 'x']
res = [test_list[i: j] for i, j in zip([0] + idx_list, idx_list +
       ([len(test_list)] if idx_list[-1] != len(test_list) else []))]

print(res)

通过巧妙地使用字符串,您可以非常高效地完成这项工作。我将列表转换为字符串,因此可以使用split函数,该函数根据字符串的一部分将列表拆分为子列表。然后我将它们转换回列表,忽略最后一个空列表

l = ['1', '2', '3', 'x', '4', '5', '6', 'x', '7', '8', '9', 'x']
s = "".join(l)
list1,list2,list3 = [list(substring) for substring in s.split('x')][:-1] #To skip the empty list from the trailing 'x'

Her'e是一个更通用的版本,使用
groupby
,适用于所有iterables:

from itertools import groupby

def split(iterable, delimiter):
    return [list(v) for k, v in groupby(iterable, delimiter.__eq__) if not k]

l = ['1', '2', '3', 'x', '4', '5', '6', 'x', '7', '8', '9', 'x']
print(split(l, 'x'))
# [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]

这些列表是否总是等长的?每个项目是否只有1个字符?尝试执行此操作时出现了什么问题?每个项目中的值是否总是不同的?应该指定。列表的长度可以是2-4,但总是有一个“x”来分隔我需要分隔的新列表。请详细说明下一票?如果列表中的内容长度超过一个字符,会发生什么?这确实会错误地将它们作为最终结果的独立元素。然而,由于它没有出现在测试用例中,我(和许多较新的答案)假设所有元素的长度都是1。