数组 Python 编程的自定义顺序 [重复]

Posted

技术标签:

【中文标题】数组 Python 编程的自定义顺序 [重复]【英文标题】:Custom Order for Array Python programming [duplicate] 【发布时间】:2022-01-17 23:38:13 【问题描述】:

我正在尝试设计一个加密函数,该函数使用如下所示的密钥以自定义顺序对数组进行洗牌:

arr = ["a","b","c","d","e"]
key = [0,1,4,3,2]
arr2 = arr 
for i in range(len(arr)):
    arr[i]= arr2[key[i]]

print(arr)

目前的问题是,每次 arr 更改时,arr2(我作为程序的参考点)都会更改。有谁知道如何解决这个问题?

【问题讨论】:

arr2 = arr[:] 进行复制。或直接arr2 = [arr[k] for k in key] Facts and myths about Python names and values 【参考方案1】:

如果我对问题的理解正确,您希望按照索引顺序 0,1,4,3,2 与原始顺序 0,1,2,3,4 相比对数组进行排序。

如果是这种情况,您可以使用列表推导来遍历键列表并创建一个新列表:

arr = ["a","b","c","d","e"]
key = [0,1,4,3,2]
sorted_by_key_array = [arr[index] for index in key]
print(sorted_by_key_array) # Outputs: ['a', 'b', 'e', 'd', 'c']

【讨论】:

谢谢,您能解释一下第 3 行中的部分是如何工作的,“[arr[index] for index in key]”是做什么的?谢谢 当然,这叫做列表推导。一个例子是: test_list = [integer for integer in range(10)] 这将提供从 0 到 9 的所有整数的列表。在这种情况下,让我们从循环开始。 index for index in key 是您的键的列表,它们对应于所需的索引。所以需要做的是对于每个键,你需要通过索引从列表中获取所需的元素:arr[index].

以上是关于数组 Python 编程的自定义顺序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

简单的自定义弹框

如何在 Android 中以编程方式触发自定义信息窗口

过滤数组列表或列表中的自定义对象[重复]

使用键更新数组中的自定义对象[重复]

在 Swift 中,如何检测编码的自定义类数组中的重复项?

具有自定义子组件的自定义 Blazor 组件