Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在工作日列表中添加破折号_Python_Python 3.x - Fatal编程技术网

Python 在工作日列表中添加破折号

Python 在工作日列表中添加破折号,python,python-3.x,Python,Python 3.x,我有一个序列: WEEKDAYS = [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', ] 有如下输入: ['Sun', 'Thu', 'Fri', 'Sat'] 我想要像这样的输出: Sun, Thu - Sat 我很困惑怎么做。这里有一种方法可以用它来做。输入列表中的项目根据其在工作日中的分布情况,通过将索引差为1的项目分组,进行聚类: from itertools import

我有一个序列:

WEEKDAYS = [
    'Sun',
    'Mon',
    'Tue',
    'Wed',
    'Thu',
    'Fri',
    'Sat',
]
有如下输入:

['Sun', 'Thu', 'Fri', 'Sat']
我想要像这样的输出:

Sun, Thu - Sat

我很困惑怎么做。

这里有一种方法可以用它来做。输入列表中的项目根据其在
工作日
中的分布情况,通过将索引差为1的项目分组,进行聚类:

from itertools import count, groupby

lst = ['Sun', 'Thu', 'Fri', 'Sat']
c = count()
new_lst = []
for _, g in groupby(lst, lambda x: WEEKDAYS.index(x)-next(c)):
    g = list(g)
    if len(g) > 2:
        new_lst.append(g[0] + '-' + g[-1])
    else:
        new_lst.extend(g)
print(new_lst)
# ['Sun', 'Thu-Sat']

如果需要避免当前方法中的多个
list.index
调用,您可以在工作日将list
设置为字典。

请更简单地解释输入是如何派生的,我的意思是:我有
mylist=[0,5,6,7,8]
。5到8是一个序列号,而0和6不是,因此输出类似于
0,5-8
。是否要环绕范围?例如,输入是否应产生输出
Fri-Sun