我正在用 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/