python - 从列表列表中删除重复内容而不保留任何顺序

标签 python

我正在用 Python 编写代码来查找整数的因子对。但是配对也会导致反向配对。我想在不导入任何模块的情况下使用简单的方法消除那些反向对。 例如。

[[1, 200], [2, 100], [4, 50], [5, 40], [8, 25], [10, 20], [20, 10], [ 25, 8], [40, 5], [50, 4], [100, 2], [200, 1]]

输出应该是:

[[1, 200], [2, 100], [4, 50], [5, 40], [8, 25], [10, 20]]

这是我目前所得到的:

N = []
J = []
F = []
Z = []
S = []
num = input("Enter no. of elements in list")
print ('Enter numbers')
prod = 1
for i in range(int(num)):
    n = input("num :")
    N.append(int(n))
for x in N:
    prod = prod*x
print (prod)
k = input("Enter no. of splits:")
for o in range(1,prod+1):
    if prod%o == 0:
        J.append(o)
        F.append(o)
print (J)

Z = [[a, b] for a in J for b in F if a*b == prod]
print (Z)

最佳答案

使用 set 删除重复项。

例如:

lst = [[1, 200], [2, 100], [4, 50], [5, 40], [8, 25], [10, 20], [20, 10], [25, 8], [40, 5], [50, 4], [100, 2], [200, 1]]
lst = set([tuple(sorted(i)) for i in lst])      #Sort inner list and then use set
lst = list(map(list, lst))                      #Converting back to list
print(lst)

输出:

[[8, 25], [4, 50], [1, 200], [10, 20], [2, 100], [5, 40]]

关于python - 从列表列表中删除重复内容而不保留任何顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51456809/

相关文章:

python反斜杠正则表达式的乐趣

Python线程问题

python - scrapy 引发异常从项目目录外部运行

python - 处理可能为 None 的变量

python - 如何使用非规范化数据保持代码整洁?

python - 如何在 pandas 中存储仅时间时间戳?

python - 找不到包 "libapache2-mod-proxy-html"Ubuntu 16.04

Python - 通过 X 点拟合多项式(多维)

python - 识别数据框中增加的特征

python - 如何使用 numpy 种子创建确定性随机数生成器?