Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_Character_Alphabetical_Alphabet - Fatal编程技术网

将字母范围扩展到Python中的字符列表

将字母范围扩展到Python中的字符列表,python,string,character,alphabetical,alphabet,Python,String,Character,Alphabetical,Alphabet,我有按字母顺序描述一系列字符的字符串,由两个用连字符分隔的字符组成。我想把它们展开成一个单独的字符列表,如下所示: 'a-d' -> ['a','b','c','d'] 'B-F' -> ['B','C','D','E','F'] 在Python中实现这一点的最佳方法是什么 In [19]: s = 'B-F' In [20]: list(map(chr, range(ord(s[0]), ord(s[-1]) + 1))) Out[20]: ['B', 'C', 'D', 'E

我有按字母顺序描述一系列字符的字符串,由两个用连字符分隔的字符组成。我想把它们展开成一个单独的字符列表,如下所示:

'a-d' -> ['a','b','c','d']
'B-F' -> ['B','C','D','E','F']
在Python中实现这一点的最佳方法是什么

In [19]: s = 'B-F'

In [20]: list(map(chr, range(ord(s[0]), ord(s[-1]) + 1)))
Out[20]: ['B', 'C', 'D', 'E', 'F']
诀窍是将两个字符都转换为ASCII码,然后使用
range()

另外,由于您需要一个列表,
list(map(…)
结构可以替换为列表

import string

def lis(strs):
    upper=string.ascii_uppercase
    lower=string.ascii_lowercase

    if strs[0] in upper:        
        return list(upper[upper.index(strs[0]): upper.index(strs[-1])+1])
    if strs[0] in lower:
        return list(lower[lower.index(strs[0]): lower.index(strs[-1])+1])

print(lis('a-d'))
print(lis('B-F'))
输出:

['a', 'b', 'c', 'd']
['B', 'C', 'D', 'E', 'F']
除了使用
map()
,您还可以通过列表理解来执行此操作:

>>> s = "A-F"
>>> [chr(item) for item in range(ord(s[0]), ord(s[-1])+1)]
['A', 'B', 'C', 'D', 'E', 'F']

如果输入不是字符串,则可以将所需的字符放在表达式中。我想要以“a”开头的文件字母,所以映射(chr,range(ord('a'),ord('a')+5))