首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >菜鸟问题--一个元组->列表列表(带有工作日历)

菜鸟问题--一个元组->列表列表(带有工作日历)
EN

Stack Overflow用户
提问于 2022-05-19 09:46:25
回答 2查看 59关注 0票数 1
代码语言:javascript
复制
from workalendar.core import Calendar
from workalendar.registry import registry

CalendarClass = registry.get('US')
calendar = CalendarClass()

# Get the range of years
start_year = 2018
end_year = 2020
all_years = range(start_year, end_year + 1, 1)

# Get the holidays for each of the years
holiday_list = list()

for yearr in all_years:
    holiday_list.append(calendar.holidays(yearr))

holiday_list

截断输出:

代码语言:javascript
复制
[[(datetime.date(2019, 1, 1), 'New year'),
(datetime.date(2019, 4, 19), 'Good Friday'),
...
(datetime.date(2019, 12, 26), 'Boxing Day')],
[(datetime.date(2020, 1, 1), 'New year'),
(datetime.date(2020, 4, 10), 'Good Friday'),
...
(datetime.date(2020, 12, 26), 'Boxing Day')],
[(datetime.date(2021, 1, 1), 'New year'),
(datetime.date(2021, 4, 2), 'Good Friday'),
...
(datetime.date(2021, 12, 25), 'Christmas Day'),
(datetime.date(2021, 12, 26), 'Boxing Day')]]

所以你可以在这里看到它是一个列表中的三个元组列表。在网上搜索时,我不断地得到不会将内部元组转换为列表的结果,或者仍然返回三个列表,或者返回三层列表等等。我如何才能得到一个列表列表,其中包含日期和假日名称?

编辑:想要的结果会是什么样子?

代码语言:javascript
复制
[[datetime.date(2019, 1, 1), 'New Year'],
[datetime.date(2019, 4, 19), 'Good Friday'],
...
[datetime.date(2020, 12, 26), 'Boxing Day'],
[datetime.date(2021, 1, 1), 'New year'],
...
[datetime.date(2021, 12, 25), 'Christmas Day'],
[datetime.date(2021, 12, 26), 'Boxing Day']]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-19 09:54:40

我是这样做的:

代码语言:javascript
复制
final_list = []
for inner_list in your_list: final_list += [list(inner_tuple) for inner_tuple in inner_list] 

得到这个输出:

代码语言:javascript
复制
[[datetime.date(2019, 1, 1), 'New year'],
 [datetime.date(2019, 4, 19), 'Good Friday'],
 [datetime.date(2019, 12, 26), 'Boxing Day'],
 [datetime.date(2020, 1, 1), 'New year'],
 [datetime.date(2020, 4, 10), 'Good Friday'],
 [datetime.date(2020, 12, 26), 'Boxing Day'],
 [datetime.date(2021, 1, 1), 'New year'],
 [datetime.date(2021, 4, 2), 'Good Friday'],
 [datetime.date(2021, 12, 25), 'Christmas Day'],
 [datetime.date(2021, 12, 26), 'Boxing Day']]

希望能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2022-05-19 09:57:18

如果要将最内部的元组转换为列表,同时保留它们的内容,则可以迭代holiday_list元素的元素,并分别转换它们:

代码语言:javascript
复制
out = [[list(inner_tuple) for inner_tuple in sublist] for sublist in holiday_list]

如果您想要将列表进一步简化,请将两个列表理解合并为一个:

代码语言:javascript
复制
out = [list(inner_tuple) for sublist in holiday_list for inner_tuple in sublist]

原则上,list(inner_tuple)inner_tupletuple类型转换为list类型。这发生在每一个for inner_tuple in sublist上。在第一种情况下,结果被额外地包装到一个列表本身中(内部[])。我们对所有sublist in holiday_list重复此操作,并将其保存为一个列表(外部[])。请注意,在第二种情况下,for语句的顺序是相反的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72302288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档