Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据实例将列表拆分为较小的列表_Python_Python 3.x - Fatal编程技术网

Python 根据实例将列表拆分为较小的列表

Python 根据实例将列表拆分为较小的列表,python,python-3.x,Python,Python 3.x,我有一个元组列表: list = [('A',2),('A',1),('B',3),('A',4),('B',5),('A',1)] 我想要两个列表,一个包含第一个元素“A”的所有元组,另一个包含第一个元素“B”的元组 listA = [('A',2),('A',1),('A',4),('A',1)] listB = [('B',3),('B',5)] 有什么想法吗?非常感谢。 编辑:请注意,上面的列表只是一个示例,我的实际列表要长得多,并且有100多个不同的第一个元素。列表理解将实现

我有一个元组列表:

 list = [('A',2),('A',1),('B',3),('A',4),('B',5),('A',1)]
我想要两个列表,一个包含第一个元素“A”的所有元组,另一个包含第一个元素“B”的元组

 listA = [('A',2),('A',1),('A',4),('A',1)]
 listB = [('B',3),('B',5)]
有什么想法吗?非常感谢。
编辑:请注意,上面的列表只是一个示例,我的实际列表要长得多,并且有100多个不同的第一个元素。

列表理解将实现以下目的:

listA = [x for x in list if x[0] == 'A']
listB = [x for x in list if x[0] == 'B']

此外,命名变量
列表通常是一个坏主意,因为它会覆盖内置变量。

最简单且可读的方法是使用:


你可以试试下面的解决方案,希望这能解决你的问题

ls= [('A',2),('A',1),('B',3),('A',4),('B',5),('A',1)]
key = [i[0] for i in ls]
temp = []
for i in ls:
    temp2 = []
    for j in key:
        if i[0] == j:
            temp2.append(i)
    temp.append(temp2)
上述代码的输出为:

[[('A', 2)], [('A', 1)], [('B', 3)], [('A', 4)], [('B', 5)], [('A', 1)]]

列表将根据元组键将1列表转换为列表列表。

您尝试过什么吗?可能是一个简单的for-loop版本?我可以做一个循环,但我的实际列表有100多个不同的第一个元素,所以我不确定如何进行,这只是我的示例,我认为我的实际列表对于列表理解来说太长了,因为我有100多个不同的第一个元素
[[('A', 2)], [('A', 1)], [('B', 3)], [('A', 4)], [('B', 5)], [('A', 1)]]