数组 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 编程的自定义顺序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章