Python 如何在从原始列表交换项目时创建列表列表?
我想通过交换列表中的项目来生成列表列表。我需要先用列表中的每个项目交换一个。然后,我必须回到原来的列表,并开始交换两个与每个项目。比如说Python 如何在从原始列表交换项目时创建列表列表?,python,python-3.x,Python,Python 3.x,我想通过交换列表中的项目来生成列表列表。我需要先用列表中的每个项目交换一个。然后,我必须回到原来的列表,并开始交换两个与每个项目。比如说 L0 = [1, 2, 3, 4] L1 = [2, 1, 3, 4] L2 = [3, 2, 1, 4] L3 = [4, 2, 3, 1] 然后我开始从原始列表L1中交换2 L4 = [1, 3, 2, 4] L5 = [1, 4, 3, 2] 如何在python中创建类似的内容?我认为这会起作用 res = [a[:]] for i in range
L0 = [1, 2, 3, 4]
L1 = [2, 1, 3, 4]
L2 = [3, 2, 1, 4]
L3 = [4, 2, 3, 1]
然后我开始从原始列表L1中交换2
L4 = [1, 3, 2, 4]
L5 = [1, 4, 3, 2]
如何在python中创建类似的内容?我认为这会起作用
res = [a[:]]
for i in range(len(a)):
for j in range(i+1, len(a)):
a[i], a[j] = a[j], a[i]
res.append(a[:])
a[i], a[j] = a[j], a[i]
可以将嵌套for循环与列表切片一起使用:
L0 = [1, 2, 3, 4]
res = []
for i in range(len(L0) - 1):
for j in range(i + 1, len(L0)):
swappedList = L0[:i] + [L0[j]] + L0[i+1:j] + [L0[i]] + L0[j+1:]
res.append(swappedList)
print(res)
输出:
[[2, 1, 3, 4], [3, 2, 1, 4], [4, 2, 3, 1], [1, 3, 2, 4], [1, 4, 3, 2], [1, 2, 4, 3]]
一点解释:
:元素从第一个到L0[:i]
-thi-1
:[L0[j]
-th元素,我们使用j
而不是j
进行交换i
:从L0[i+1:j]
-th到i+1
-th的元素j-1
:[L0[i]
-第四个元素,我们使用i
而不是i
进行交换j
您能否将您的第一次尝试与代码共享?