【问题标题】:re-numbering list members in python [closed]在python中重新编号列表成员[关闭]
【发布时间】:2019-09-22 16:44:40
【问题描述】:

如何在 Python 中将列表成员分别从零重新编号到 n ?

例如:

In : [4, 10, 12, 40, 4, 12, 20, 21]

Out : [0, 1, 2, 3, 0, 2, 4, 5]

【问题讨论】:

  • 这是什么逻辑?不要乱扔数字,让我们猜你需要什么。
  • @ᴀʀᴍᴀɴ:这里没有迹象表明排序与此有关。
  • 我对逻辑的猜测是,我们从左到右,从计数器 0 开始,如果之前在输入列表中没有看到,则将计数器值添加到输出并递增计数器,否则如果看到之前,添加与上一个案例中的项目对应的计数器值。
  • @ArkistarvhKltzuonstev 很好的猜测,但仍然是猜测。我们不应该处于猜测状态。
  • 另一个猜测:OP 总是希望 [0, 1, 2, 3, 0, 2, 4, 5] 作为输出,无论输入是什么。

标签: python python-3.x list numpy


【解决方案1】:

给你,解决你的问题

x=[4, 10, 12, 40, 4, 12, 20, 21]
y=[0]
nextIndex=1;
for i in (range(1,len(x))):
    for j in range(i):
        if(x[i]==x[j]):
            y.append(y[j])
            break
        if(j==i-1):
            y.append(nextIndex)
            nextIndex+=1
print(y)

输出:

[0, 1, 2, 3, 0, 2, 4, 5]

基本上用户正在尝试为重复整数获取相同的索引并为新整数分配新的索引

@Rafat 下次尝试把你的问题说得更清楚。

【讨论】:

  • 您的解决方案有效,但是您使用了两个 for 循环和两个 if 测试,这绝对可以分解为一个 for 循环和一个 if 测试。看看列表理解解决方案是否可行也会很有趣。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
  • 2015-03-05
相关资源
最近更新 更多