python - 在 python 中进行移位排列

标签 python permutation

我需要做一个看起来像 1-N 序列的排列,其中在 #k 中填充了 0。

这个方法可行,但是使用内置函数有什么更简单的方法吗?

def permshift(n,k):
   return [0 if x == k else x+(x<k) for x in range(n)]

>>> permshift(7,0)
[0, 1, 2, 3, 4, 5, 6]
>>> permshift(7,1)
[1, 0, 2, 3, 4, 5, 6]
>>> permshift(7,2)
[1, 2, 0, 3, 4, 5, 6]
>>> permshift(7,3)
[1, 2, 3, 0, 4, 5, 6]
>>> permshift(7,4)
[1, 2, 3, 4, 0, 5, 6]
>>> permshift(7,5)
[1, 2, 3, 4, 5, 0, 6]
>>> permshift(7,6)
[1, 2, 3, 4, 5, 6, 0]

最佳答案

只需创建一个新列表,然后在需要的地方插入 0

def permshift(n, k):
    lst = range(1, n)
    lst.insert(k, 0)
    return lst

关于python - 在 python 中进行移位排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11252597/

相关文章:

javascript - 提高这种组合算法的性能?

java - 在 Java 中实现置换算法的技巧

python - 合并具有相同键的字典列表

python - 我需要帮助修复这个刽子手功能

python - 高效行标准化矩阵

permutation - 用长度为 s 和 t 的木棍填充长度为 L 的洞的方法

algorithm - 计算一个循环中的排列数

python - 如何授予ElasticBeanstalk访问AWS CodeCommit的权限

python - pandas Dataframe.loc 如何接受 [...] 语法?

python - 如何有效地从大小为 n 的列表中获取大小为 {n, n-1,n-2, ... 1} 的所有排列?