gpt4 book ai didi

python - 如何检查列表中数字的顺序与其他列表?

转载 作者:太空宇宙 更新时间:2023-11-04 01:56:56 25 4
gpt4 key购买 nike

我有一个列表,其中包含以下按升序排列的值。

l1 = [1,3,9]

有6种可能的排列,每个排列的长度都是l1的长度。

(1, 3, 9)
(1, 9, 3)
(3, 1, 9)
(3, 9, 1)
(9, 1, 3)
(9, 3, 1)

我需要删除所有遵循 l1 顺序的排列。

[1,3,9] 1,3 匹配 l1 中的顺序。

[9,1,3] 1,3 匹配 l1 中的顺序。

[3,9,1] 3,9 匹配 l1 中的顺序。

答案应该是 6-3 = 3 我的代码:

from itertools import permutations
l = [1,3,9]
perm = permutations(l, len(l))
res = []
for i in list(perm):
res.append(i)
for i in res:
for j in range(0,len(i)):
if i[j] and i[j+1] in l[j]:
res.remove(i)
print(len(res))

我收到类型错误。我该如何解决这个问题以及 if 语句

最佳答案

您可以从您的原始数据创建相邻元组并检查您的排列中的任何元组是否在您的原始列表中 - 只有如果不在:添加到结果:

from itertools import permutations
l = [1,3,9]

# create all neighbor-tuples
tups = set(zip(l,l[1:]))
perm = list(permutations(l, len(l)))
print("perm: ", perm)
res = []
print("tups: ", list(tups))
for i in perm:
itups = zip(i,i[1:]) # create neighbor tuples from this permutation
if any( t in tups for t in itups):
continue
res.append(i)

print(len(res))
print(res)

输出:

perm:  [(1, 3, 9), (1, 9, 3), (3, 1, 9), (3, 9, 1), (9, 1, 3), (9, 3, 1)]
tups: [(3, 9), (1, 3)]
3
[(1, 9, 3), (3, 1, 9), (9, 3, 1)]

文档:

关于python - 如何检查列表中数字的顺序与其他列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56601365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com