gpt4 book ai didi

python - 用从 0 开始的唯一项目替换列表中的项目

转载 作者:行者123 更新时间:2023-11-28 20:20:26 24 4
gpt4 key购买 nike

假设我有一个这样的列表:

Y=[1018, 1018, 1011, 1012, 1013, 1014, 1019, 1019, 1017]

将每个数字替换为最pythonic的方法是什么

  • 最小的未使用整数 (>=0),如果之前没有看到该数字
  • 用于替换数字的相同整数

这样列表就变成了:

Y=[0, 0, 1, 2, 3, 4, 5, 5, 6]

第一个元素是否为 0 并不重要,但两个数字列表之间必须存在唯一的最大匹配(= 赋值),即这也是一个很好的解决方案:

Y=[3, 3, 4, 0, 2, 5, 6, 6, 1]

编辑:我尝试的是使用 find 的 for 循环,我的解决方案非常丑陋,我知道有更好的方法来做,这与我做得有多糟糕无关:D

最佳答案

想到的第一个想法是将值转换为 set()enumerate() 它们,将这些对存储在字典中,然后使用映射列表理解以创建新列表:

>>> Y=[1018, 1018, 1011, 1012, 1013, 1014, 1019, 1019, 1017]
>>> mapping={v:k for k,v in enumerate(set(Y))}
>>> Y1=[mapping[y] for y in Y]
>>> Y1
[5, 5, 0, 1, 2, 3, 6, 6, 4]

关于python - 用从 0 开始的唯一项目替换列表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31328043/

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