我有两份名单。
List1是我正在尝试格式化的项目列表。
List2是我需要删除的List1中项目位置的列表(压缩副本)
问题似乎是它首先删除了第一个位置(9),然后删除了同时执行它们的第二个(16) after...instead。在移除9之后,列表将被更改,16也因此被移除到不同的预定位置。
List1 = ["HST", "BA", "CRM", "QQQ", "IYR", "TDG", "HD", "TDY", "UAL", "CRM", "XOM", "CCL", "LLY", "QCOM", "UPS", "MPW", "CCL", "ILMN", "MU", "GOOGL", "AXP", "IVZ", "WY"]
List2 = [9, 16]
print(List1)
print(List2)
for x in List2:
List1.pop(x)
print(List1)发布于 2022-11-25 16:32:32
试着做这样的事
List1 = ["HST", "BA", "CRM", "QQQ", "IYR", "TDG", "HD", "TDY", "UAL", "CRM", "XOM", "CCL", "LLY", "QCOM", "UPS", "MPW", "CCL", "ILMN", "MU", "GOOGL", "AXP", "IVZ", "WY"]
List2 = [9, 16]
print(List1)
print(List2)
for i, x in enumerate(List2):
List1.pop(x-i)
print(List1)发布于 2022-11-25 16:32:31
您可以对List2进行排序,然后将其反转(sorted(List2, key=List2.index, reverse=True))。然后python会将这些元素从后面移到前面:
List1 = ["HST", "BA", "CRM", "QQQ", "IYR", "TDG", "HD", "TDY", "UAL", "CRM", "XOM", "CCL", "LLY", "QCOM", "UPS", "MPW", "CCL", "ILMN", "MU", "GOOGL", "AXP", "IVZ", "WY"]
List2 = [9, 16]
List2 = sorted(List2, key=List2.index, reverse=True)
for x in List2:
List1.pop(x)
print(List1)发布于 2022-11-25 16:33:04
使用:
S = set(List2)
out = [x for i, x in enumerate(List1) if i not in S]https://stackoverflow.com/questions/74575522
复制相似问题