【问题标题】:Python: Adding element to list at index with the same valuePython:将元素添加到具有相同值的索引处的列表
【发布时间】:2025-12-25 20:05:11
【问题描述】:

我有一个包含许多整数的列表,并将它们添加到与它们的值匹配的索引处的第二个列表中。第二个列表已经用占位符(“X”)填充了 bin。 即:

firstlist = [2, 3, 5]

输出:

secondlist = ['X', 'X', 2, 3, 'X', 5, 'X', 'X']

最好的方法是什么? 非常感谢任何帮助!

【问题讨论】:

  • 输出前的第二个列表包含什么?在您更改之前的示例中,secondlist 是否包含 8 个 X 或仅包含 5 个 X?
  • 您尝试了什么,遇到的具体问题是什么?
  • @GeeTransit 更改为当前输出之前的第二个列表只是一个用 10 个“X”作为占位符填充的列表。
  • @user7755 这是否意味着这里的正确解决方案会覆盖三个 X 并删除一个?我很困惑。

标签: python list indexing


【解决方案1】:

这将接受一个列表参数并将它们放入一个新列表中以由函数返回。

def list_fill(first_list, fill, length=None):
    return [(i if i in first_list else fill) for i in (range(max(first_list) + 1) if length is None else range(length))]

list_fill 的工作原理:

first_list 参数包括要更改的索引。
fill 参数应该是空格。
第三个可选的length 参数指定输出的长度。如果留空,它将采用first_list 中指定的最大索引。

【讨论】:

  • 这会创建一个新列表,这似乎与 OP 正在寻找的内容不一致。事实上它根本不使用第二个列表 shrug
  • 我已经对其进行了编辑,因此它可以有一个长度参数。如果希望输出列表长度为 5,则可以使用 list_fill((1, 3, 4), 'X', 5)。 OP 的secondlist 刚刚填充了'X'。你可以把它放在fill 参数中。
  • 当然,我不同意这可能是一种更好的方法,但它似乎没有做 OP 想要做的事情。不过,这可能只是一个不清楚的规范问题(在编程中从来都不是问题:D)
  • 我认为 OP 的 secondlist 没有实际用途,只是预先创建的输出列表。无论如何,函数可以在任何地方使用,所以如果 OP 在他们的代码中到处使用它,它可以最小化代码长度:D
  • 从未真正考虑过使用 if-else 语句填充列表,但这似乎确实是添加占位符的好方法!
【解决方案2】:

您是否正在寻找像这样简单的东西:

firstlist = [2, 3, 5]
secondlist = ['X']*10

for index in firstlist:
    secondlist[index] = index

print(secondlist)
# ['X', 'X', 2, 3, 'X', 5, 'X', 'X', 'X', 'X']

可以为firstlist 提供一个dict,为key 提供索引,并为dict 设置您想要放置为values 的值。

【讨论】:

  • 其实是的!没想到就这么简单。谢谢!
【解决方案3】:

如果您想保留已在 secondlist 中的内容,可以使用 .insert()。

firstlist = [2, 3, 5]
secondlist = ['X', 'X', 'X', 'X', 'X']

for x in range(len(firstlist)):
    secondlist.insert(firstlist[x], firstlist[x])

print(secondlist)

【讨论】:

    【解决方案4】:

    假设您需要创建一个函数YourFunc(inputlist,length),其中inputlist 参数是输入列表,length 是输出列表长度参数。 所以,根据你的问题,inputlist=[2,3,5]length=8

    def YourFunc(inputlist,length):
            out=[]
            for X in range (0,length):
                    if inputlist.count(X)==1:
                             out.append(X)
                    elif inputlist.count(X)==0:
                             out.append('X')
            print(out)
    
    YourFunc([2,3,5],8)
    

    所以,这就是我通常的做法。 在这个函数中,一个循环从0 运行到length。如果 is 元素不在 inputlist 中,则将 'X' 插入到输出列表 out 中。如果没有,则插入循环中的数字。

    【讨论】:

      最近更新 更多