检测字符串是否是Python中的pangram

sma*_*zie 3 python

这是怎么回事?它检查字符串是否至少包含一次az中的每个字符?

import string

def ispangram(str1, alphabet=string.ascii_lowercase):  
    alphaset = set(alphabet)  
    return alphaset <= set(str1.lower()) 
Run Code Online (Sandbox Code Playgroud)

这返回True,例如:

ispangram("The quick brown fox jumps over the lazy dog")
Run Code Online (Sandbox Code Playgroud)

我只能假设它与这里所述的词法排序有关,但仍然有点困惑.

使用大于或小于运算符比较两个列表

当我读到这个SO问题中的链接时:

https://docs.python.org/3/tutorial/datastructures.html#comparing-sequences-and-other-types

它说:

可以将序列对象与具有相同序列类型的其他对象进行比较.比较使用词典排序:首先比较前两个项目,如果它们不同,则确定比较的结果; 如果它们相等,则比较接下来的两个项目,依此类推,直到任一序列用完为止.如果要比较的两个项本身是相同类型的序列,则递归地执行词典比较.如果两个序列的所有项比较相等,则认为序列相等.如果一个序列是另一个序列的初始子序列,则较短的序列是较小的(较小的)序列.字符串的字典顺序使用Unicode代码点编号来排序单个字符.相同类型的序列之间的比较的一些示例.

但这对我来说并不清楚.

Roc*_*lly 6

这是一个set操作,而不是list.相当于,

alphaset.issubset(set(str1.lower()))
Run Code Online (Sandbox Code Playgroud)

s <= t

s.issubset(t)的

测试s中的每个元素是否都在t中.

请参见:https: //docs.python.org/2/library/sets.html

编辑:请参阅此处获取当前版本的Set.虽然在旧版本中给出了更简单的解释(用于比较).