我有这个列表示例list1=[['p1', 'p2', 'p3', 'p4'], ['p5', 'p6', 'p7']]并且如果任何变量与其他变量相同他们把它分成一组。 让我们说p1和p4是相同的,p5和p6。 所以我想要一个新列表,看起来像list2=[['p1', 'p4'], ['p2', 'p3'], ['p5', 'p6'], 'p7'] 所以我需要如何划分它们,请帮忙。 我正在使用最新版本的python。

好的,对于我的程序中的“相同”更具体,我使用p1和p4,如果它们为某个字符给出相同的结果,那么我将它们合并到一个组中。

if dictionary.get(p1, character) is dictionary.get(p4, character)

如果你有更多问题,请问我。

===============>>#1 票数:2

以下将给出结果:

list1=[[1, 2, 2, 1], [3, 4, 3]]

print [[item]*lst.count(item) for lst in list1 for item in list(set(lst))]

[OUTPUT]
[[1, 1], [2, 2], [3, 3], [4]]

例1

list1=[['hello', 'hello', 'hello', 'what'], ['i', 'am', 'i']]

print [[item]*lst.count(item) for lst in list1 for item in list(set(lst))]

[OUTPUT]
[['what'], ['hello', 'hello', 'hello'], ['i', 'i'], ['am']]

例2

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

print [[item]*lst.count(item) for lst in list1 for item in list(set(lst))]

[OUTPUT]
[[1, 1], [2, 2], [3], [8, 8], [9, 9], [7], [4, 4], [5, 5], [6]]

===============>>#2 票数:1 已采纳

使用unique_everseen配方和collections.Counters

from collections import Counter

def solve(lst):
    counters = map(Counter, lst)
    return [ [uniq]*c[uniq] for seq, c in zip(lst, counters)
                                                for uniq in unique_everseen(seq)]

演示:

>>> print(solve([[1, 2, 2, 1], [3, 4, 3]]))
[[1, 1], [2, 2], [3, 3], [4]]
>>> print(solve([['hello', 'hello', 'hello', 'what'], ['i', 'am', 'i']]))
[['hello', 'hello', 'hello'], ['what'], ['i', 'i'], ['am']]
>>> print(solve([[1,2,3,2,1],[9,8,7,8,9],[5,4,6,4,5]]))
[[1, 1], [2, 2], [3], [9, 9], [8, 8], [7], [5, 5], [4, 4], [6]]

如您所见,这也保留了项目的顺序。


unique_everseen配方的代码:

from itertools import filterfalse

def unique_everseen(iterable, key=None):
    "List unique elements, preserving order. Remember all elements ever seen."
    # unique_everseen('AAAABBBCCDAABBB') --> A B C D
    # unique_everseen('ABBCcAD', str.lower) --> A B C D
    seen = set()
    seen_add = seen.add
    if key is None:
        for element in filterfalse(seen.__contains__, iterable):
            seen_add(element)
            yield element
    else:
        for element in iterable:
            k = key(element)
            if k not in seen:
                seen_add(k)
                yield element

  ask by CrveniZg translate from so

未解决问题?本站智能推荐:

4回复

如何在python中编辑列表中的特定项目

例如,我将如何进行 从列表中取出一个项目(例如,假设为40 ) 对它进行操作(假设为int(40) - 30) ) 然后把那个项目(即'40' )放回原来的位置(第3个)? 在这种情况下更新的列表应该是:
3回复

如何在Python 3中打印出编号列表

如何打印每个python列表的索引位置,使其从1而不是0开始。这是我希望它看起来像的一个想法: 输出: 我需要知道的是如何将这些数字显示在我要打印的内容旁边? 我可以打印出AE没问题,但是我不知道如何对列表进行编号。
1回复

在Python 3.4中打印列表的总和

这个问题已经在这里有了答案: 使用Python 3打印时出现语法错误[重复] 3个答案 我刚刚在Codeacademy学习了Python语法,并决定尝试在Python中做一些适当的工作。 因此,我下载了最新版本,尽管我的代码可在Codeacademy上使用,但在此
4回复

根据python中的所有其他元素对列表进行排序

如果我有一个包含遵循以下结构的元素的列表: 等等。 一个示例(有3个团队): 并希望它看起来像这样: 等更多的团队。 如您所见,列表现在在最低点之后排在第一位。 从本质上讲,现在是: 由于points2的值最低。 因此,我可以像这样根据积分对列表进行排序,
1回复

将元组转换为python3中的列表并进行修改

这是python 3。 可以说我有一个元组 这个元组存储在一个列表中: 我遍历列表a 。 我需要做的是修改tup的内容。 也就是说,我想更改值,同时将其保留在列表a 。 这个对吗? 此外:我知道元组被设计成不可变的,而列表可能是更好的tup ,而不是一个元组。
1回复

方法内的切片列表(Python 3)

我有如下方法: 我对其进行了如下测试: 我得到的输出不是我期望的,因为该列表最终没有被编辑 但是,当我对列表进行append ,它确实可以编辑列表,如以下示例所示: 给出以下输出: 为什么切片不会永久更改列表?
5回复

开始使用Python函数和列表

*快速编辑我正在使用python 3.4 我刚刚开始在课堂上学习python,尽管它似乎比C ++更易于处理,但有些事情我还无法解决。 我需要做一个小函数,它接受以法郎为单位的某些温度,并将其转换为摄氏度,然后以列表形式放回去。 我拥有大部分代码,我相信它应该可以工作。 但是,我
1回复

如何删除(或消除网格)存储在列表中的Tkinter GUI对象(Python)

我正在尝试制作一个程序,在Tkinter中创建一些随机的GUI对象并将其存储在列表中。 在这里(在下面的代码中),我有一个for循环,它创建了随机数量的单选按钮。 每次创建单选按钮对象时,它都会存储在“ GUIobjects”列表中。 我这样做是因为否则以后我将无法访问GUI对象。 现在
1回复

如何在Python 3中获取由空格和回车分隔的多组输入?

因此,我们允许用户输入他们要输入的数字集。 每组输入将包含两个由空格分隔的整数。 然后,回车表示下一组输入。 例如, 接下来,我们将这些输入变量a,b,执行相同的操作,显示3个结果: 它应该首先获取所有输入,然后显示所有相应的输出。 我们有处理1组输入的逻辑,但是如何循环
3回复

列表的平均列表python numpy [重复]

这个问题已经在这里有了答案: numpy.mean在不同的行大小上 1回答 我必须在列表列表中找到每个列表的均值。 我正在使用numpy。 我试过了 当所有列表的长度相等时,它可以正常工作。 就我而言,每个列表的长度可能不同。 它给 复制