Python从列表中删除特定项

2024-10-04 09:29:19 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的列表代码:

saptamani = []
for months in range(1, 12):
    luna = calendar.monthcalendar(2020, months)
    saptamani.append(luna)
    sapt_l = []

print(saptamani)

这是此列表的输出:

[[[0, 0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18, 19], [20, 21, 22, 23, 24, 25, 26], [27, 28, 29, 30, 31, 0, 0]], [[0, 0, 0, 0, 0, 1, 2], [3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 1
6], [17, 18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29, 0]], [[0, 0, 0, 0, 0, 0, 1], [2, 3, 4, 5, 6, 7, 8], [9, 10, 11, 12, 13, 14, 15], [16, 17, 18, 19, 20, 21, 22], [23, 24, 25, 26, 27, 28, 29], [30, 31, 0, 0
, 0, 0, 0]], [[0, 0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18, 19], [20, 21, 22, 23, 24, 25, 26], [27, 28, 29, 30, 0, 0, 0]], [[0, 0, 0, 0, 1, 2, 3], [4, 5, 6, 7, 8, 9, 10], [11, 12, 13, 1
4, 15, 16, 17], [18, 19, 20, 21, 22, 23, 24], [25, 26, 27, 28, 29, 30, 31]], [[1, 2, 3, 4, 5, 6, 7], [8, 9, 10, 11, 12, 13, 14], [15, 16, 17, 18, 19, 20, 21], [22, 23, 24, 25, 26, 27, 28], [29, 30, 0, 0, 0, 0, 0]]
, [[0, 0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18, 19], [20, 21, 22, 23, 24, 25, 26], [27, 28, 29, 30, 31, 0, 0]], [[0, 0, 0, 0, 0, 1, 2], [3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15,
16], [17, 18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29, 30], [31, 0, 0, 0, 0, 0, 0]], [[0, 1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12, 13], [14, 15, 16, 17, 18, 19, 20], [21, 22, 23, 24, 25, 26, 27], [28, 29, 30,
 0, 0, 0, 0]], [[0, 0, 0, 1, 2, 3, 4], [5, 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24, 25], [26, 27, 28, 29, 30, 31, 0]], [[0, 0, 0, 0, 0, 0, 1], [2, 3, 4, 5, 6, 7, 8], [9, 10, 11,
12, 13, 14, 15], [16, 17, 18, 19, 20, 21, 22], [23, 24, 25, 26, 27, 28, 29], [30, 0, 0, 0, 0, 0, 0]]]

如何在列表中只保留大于0的项,例如在本例中:

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

将是:

[1, 2, 3, 4, 5]

Tags: 代码in列表forrangecalendarprintappend
2条回答
saptamani = []
for months in range(1, 12):
    luna = calendar.monthcalendar(2020, months)
    for i in luna:
        prepare = [m for m in i if m > 0]
        saptamani.append(new_w)

print(saptamani)

@Jan,你的回答帮助了我。这就是它的工作原理

只需在附加之前放置一个if语句:

saptamani = []
for months in range(1, 12):
    luna = [m for m in calendar.monthcalendar(2020, months) if m > 0]
    saptamani.append(luna)

print(saptamani)

或-作为列表理解:

saptamani = [luna 
             for months in range(1, 12) 
             for luna in [m for m in calendar.monthcalendar(2020, months) if m > 0]]

相关问题 更多 >