将编号列表转换为顺序列表
convert a numbered list into an order list
我有一个 python 列表问题:
输入:
l=[2, 5, 6, 7, 10, 11, 12, 19, 20, 26, 28, 33, 34, 45, 46, 47, 50, 57, 59, 64, 67, 77, 79, 87, 93, 97, 106, 110, 111, 113, 115, 120, 125, 126, 133, 135, 142, 148, 160, 166, 169, 176, 202, 228, 234, 253, 274, 365, 433, 435, 436, 468, 476, 529, 570, 575, 577, 581, 614, 766, 813, 944, 1058, 1079, 1245, 1363, 1389, 1428, 1758, 2129, 2336, 2402, 2405, 2576, 3013, 3993, 7687, 8142, 8455, 8456]
现在我想在 [0]*10000 列表中标记数字,这样开头是这样的:
输出:
lp=[0,1,0,0,1,...]
第二个和第五个元素在输入中出现后被标记。
您可以使用以下列表理解
lp = [1 if i in l else 0 for i in range(1, 10001)]
尽管我建议您先将其转换为集合,因为 l
可能很长
set_l = set(l)
lp = [1 if i in set_l else 0 for i in range(1, 10001)]
lp = [0] * 10000
for index in l:
lp[index - 1] = 1
我有一个 python 列表问题:
输入:
l=[2, 5, 6, 7, 10, 11, 12, 19, 20, 26, 28, 33, 34, 45, 46, 47, 50, 57, 59, 64, 67, 77, 79, 87, 93, 97, 106, 110, 111, 113, 115, 120, 125, 126, 133, 135, 142, 148, 160, 166, 169, 176, 202, 228, 234, 253, 274, 365, 433, 435, 436, 468, 476, 529, 570, 575, 577, 581, 614, 766, 813, 944, 1058, 1079, 1245, 1363, 1389, 1428, 1758, 2129, 2336, 2402, 2405, 2576, 3013, 3993, 7687, 8142, 8455, 8456]
现在我想在 [0]*10000 列表中标记数字,这样开头是这样的:
输出:
lp=[0,1,0,0,1,...]
第二个和第五个元素在输入中出现后被标记。
您可以使用以下列表理解
lp = [1 if i in l else 0 for i in range(1, 10001)]
尽管我建议您先将其转换为集合,因为 l
可能很长
set_l = set(l)
lp = [1 if i in set_l else 0 for i in range(1, 10001)]
lp = [0] * 10000
for index in l:
lp[index - 1] = 1