Python 将列表拆分为组成部分

Python 将列表拆分为组成部分,python,Python,我有一个如下列表: list = ['EDZ8 comdtyEDM1 comdtyEDU1 comdty', 'EDZ8 comdtyEDM1 comdtyEDZ1 comdty', 'EDZ8 comdtyEDM1 comdtyEDH2 comdty'] 我想把它分成一个列表 split_list = [['EDZ8 comdty', 'EDM1 comdty', 'EDU1 comdty'],['EDZ8 comdty', 'EDM1 comdty', 'EDZ1 comdty'], ['

我有一个如下列表:

list = ['EDZ8 comdtyEDM1 comdtyEDU1 comdty', 'EDZ8 comdtyEDM1 comdtyEDZ1 comdty', 'EDZ8 comdtyEDM1 comdtyEDH2 comdty']
我想把它分成一个列表

split_list = [['EDZ8 comdty', 'EDM1 comdty', 'EDU1 comdty'],['EDZ8 comdty', 'EDM1 comdty', 'EDZ1 comdty'], ['EDZ8 comdty', 'EDM1 comdty', 'EDH2 comdty']]

你有什么想法吗?每个字符串的长度相同,需要拆分为11个字符的组成部分。

由于字符串长度是一个常数,您可以使用列表理解将每个字符串拆分为长度为11的块:

n = 11
x = ['EDZ8 comdtyEDM1 comdtyEDU1 comdty', 'EDZ8 comdtyEDM1 comdtyEDZ1 comdty', 'EDZ8 comdtyEDM1 comdtyEDH2 comdty']
res = [[s[i:i+n] for i in range(0, len(s), n)] for s in x]
输出:

[['EDZ8 comdty', 'EDM1 comdty', 'EDU1 comdty'],
 ['EDZ8 comdty', 'EDM1 comdty', 'EDZ1 comdty'],
 ['EDZ8 comdty', 'EDM1 comdty', 'EDH2 comdty']]

使用列表理解和正则表达式(假设所有数据点都以ED开头):

这样,它将对“我的列表”中有多少元素执行此过程。在这种情况下,由于只有一个,因此输出将是

这是一个列表列表
final_list[0]
是列表中的第一个字符串
my_list
被拆分为所需列表的列表,因此如果将来列表中有两个字符串,则会有元素
final_list[0]
final_list[1]


这个答案和这里的另一个答案之间的区别是,这将在不知道列表中每个字符串的长度的情况下工作。另一个答案也是有效的,但这将防止字符串中的可变长度

您是否至少可以创建一个列表,我们可以将粘贴复制到终端中而不会出现语法错误?有许多Python教程可以帮助您学习
拆分
方法和字符串切片。你应该可以从那里得到它。除此之外,在进行编码尝试之前,您应该能够正确格式化所需的输入和输出。您发布的内容不是合法的Python。根据请求进行修改您已将列表命名为
list
,隐藏了类型的定义。有时你可以不受惩罚,但这不是一个好的做法。如果我想创建一个元组列表而不是列表列表,那么[('EDZ8-comdty','EDM1-comdty','EDU1-comdty'),('EDZ8-comdty','EDM1-comdty','EDZ1-comdty'),('EDZ8-comdty','EDM1-comdty','EDH2 comdty')]然后在内部列表周围放置
tuple()
    my_list=['EDZ8 comdtyEDM1 comdtyEDU1 comdty, EDZ8 comdtyEDM1 comdtyEDZ1 comdty, EDZ8 comdtyEDM1 comdtyEDH2 comdty'] 

    string_lists = [x.split(',') for x in my_list]
    final_list = [[re.findall(r'ED\w+ comdty', string) for string in string_list] for string_list in string_lists]