python - 从 Python 和 C 中的列表中找到一个转置排列

标签 python c list

我的输入是 A = [ 2,3,4,1]

输出只是 A 中元素的所有可能排列,可以通过单次换位(两个相邻元素的单次翻转)操作完成。所以输出是:

[3,2,4,1],[ 2,4,3,1],[2,3,1,4],[1,3,4,2]

如何在 Python 中执行此操作?和/或C

编辑 允许循环转置。因此 [2,3,4,1] ==> [1,3,4,2] 是允许的并且是一个有效的输出。

最佳答案

A = [2,3,4,1]

res = []
for i in range(len(A)):
    temp = A[:]
    temp[i], temp[i-1] = temp[i-1], temp[i]
    res.append(temp)

print res

结果:

[[1, 3, 4, 2], [3, 2, 4, 1], [2, 4, 3, 1], [2, 3, 1, 4]]

关于python - 从 Python 和 C 中的列表中找到一个转置排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27657541/

相关文章:

python - 如何在 Windows 上使用 Python 获取所有显示器的信息?

python - 如何显示来自 `django-notification` 的通知?

c - 为结构体分配内存时出现 Malloc 错误

list - Haskell 中的替代 ZipList 实例?

qt - 错误: Cannot assign QObject* to QQuickItem*

python - 如何使用 discord.py 在音乐机器人上获得最佳音频质量?

python - 将变量的值打印为对象名称 python

c - 使用线程刺激赛车游戏

c++ - (数字)和(-数字)的含义

c# - List<T> 构造函数线程安全吗?