<p>问题是<a href="https://docs.python.org/3/library/calendar.html#calendar.Calendar.monthdatescalendar" rel="nofollow noreferrer">^{<cd1>}</a>返回嵌套列表:</p>
<pre><code>>>> import calendar
>>> cal = calendar.Calendar()
>>> cal.monthdatescalendar(2019, 1)
[[datetime.date(2018, 12, 31),
datetime.date(2019, 1, 1),
datetime.date(2019, 1, 2),
datetime.date(2019, 1, 3),
datetime.date(2019, 1, 4),
datetime.date(2019, 1, 5),
datetime.date(2019, 1, 6)],
[datetime.date(2019, 1, 7),
datetime.date(2019, 1, 8),
datetime.date(2019, 1, 9),
datetime.date(2019, 1, 10),
...
</code></pre>
<p>因此,如果要保持相同的结构,以便只检索一周中的第二天,可以执行以下操作:</p>
<pre><code>>>> filtered_month = [[day for day in week if day.weekday() == 1]
for week in cal.monthdatescalendar(2019, 1)]
>>> filtered_month
[[datetime.date(2019, 1, 1)],
[datetime.date(2019, 1, 8)],
[datetime.date(2019, 1, 15)],
[datetime.date(2019, 1, 22)],
[datetime.date(2019, 1, 29)]]
</code></pre>
<p>另一种选择是使用<a href="https://docs.python.org/3/library/calendar.html#calendar.Calendar.itermonthdates" rel="nofollow noreferrer">^{<cd2>}</a>,但列表将是平面的:</p>
<pre><code>>>> [day for day in cal.itermonthdates(2019, 1) if day.weekday() == 1]
[datetime.date(2019, 1, 1),
datetime.date(2019, 1, 8),
datetime.date(2019, 1, 15),
datetime.date(2019, 1, 22),
datetime.date(2019, 1, 29)]
</code></pre>
<p>另外,请注意,您可以在创建<a href="https://docs.python.org/3/library/calendar.html#calendar.Calendar" rel="nofollow noreferrer">^{<cd3>}</a>对象时指定日历的第一天。然后,要获得一周中的第一天,您只需获取列表中的第一个元素:</p>
<pre><code>>>> cal = calendar.Calendar(calendar.TUESDAY)
>>> [week[0] for week in cal.monthdatescalendar(2019, 1)]
[datetime.date(2019, 1, 1),
datetime.date(2019, 1, 8),
datetime.date(2019, 1, 15),
datetime.date(2019, 1, 22),
datetime.date(2019, 1, 29)]
</code></pre>
<p><strong>附言:</strong><br/>
顺便说一句,我认为最好像这样明确地比较几天:</p>
<pre><code>if day.weekday() == calendar.TUESDAY:
...
</code></pre>
<p>而不是</p>
<pre><code>if day.weekday() == 1:
...
</code></pre>
<p>因为<a href="https://www.python.org/dev/peps/pep-0020/#id3" rel="nofollow noreferrer"><em>Explicit is better than implicit</em></a>。你知道吗</p>