我希望采用大量换位产品,并将其归结为少量产品。我有以下代码,并希望有一些关于有效方法来降低这些产品的意见。在我提供代码之前,重要的是要认识到以下内容:
转置是两个元素的循环置换,具有以下属性:
我的代码如下。这是一个获取列表输入的过程,该列表包含许多表示转置的2元组。例如,有效输入为[(1,2)(2,3)(1,2)]。我在给定代码的底部有一个小解释。
count = 1
while count != 0:
count = 0
repeatCount = 0
swappedCount = 0
for i in range(len(route)-1):
if len(route) > 1 and repeatCount == 0:
if route[i] == route[i+1]:
route.pop(i+1)
route.pop(i)
count += 1
repeatCount += 1
for i in range(len(route)-3):
if len(route) > 3 and swappedCount == 0:
if route[i] == route[i+2] and route[i+1] == route[i+3]:
route.pop(i+3)
route.pop(i+2)
route.insert(i,route[i+1])
route.pop(i+2)
count += 1
swappedCount += 1
第一个用于循环搜索上面属性(1)的实例,第二个用于循环搜索属性(2)的实例。计数器repeatCounter和swappedCounter是我试图避免IndexError。
PS任何完全实现这一目标的方法,即始终能够及时将任何产品减少到最低限度,将会非常感激,因为运行时间是整个程序其余部分的问题。