这是怎么回事?它检查字符串是否至少包含一次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代码点编号来排序单个字符.相同类型的序列之间的比较的一些示例.
但这对我来说并不清楚.
这是一个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.虽然在旧版本中给出了更简单的解释(用于比较).