我有一个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,...]
第二个和第五个元素被标记,因为它们出现在输入中。
答案 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)]
答案 1 :(得分:1)
lp = [0] * 10000
for index in l:
lp[index - 1] = 1