这是如何工作的?它检查一个字符串是否至少包含一次来自a-z的每个字符?
import string
def ispangram(str1, alphabet=string.ascii_lowercase):
alphaset = set(alphabet)
return alphaset <= set(str1.lower())
这返回True,例如:
ispangram("The quick brown fox jumps over the lazy dog")
我只能假设它与这里所述的词法排序有关,但仍然有点困惑。
Comparing two lists using the greater than or less than operator
当我读到这个SO问题中的链接时:
https://docs.python.org/3/tutorial/datastructures.html#comparing-sequences-and-other-types
它说:
可以将序列对象与具有相同对象的其他对象进行比较 序列类型。比较使用词典排序:首先是 比较前两项,如果它们不同则决定了 比较结果;如果他们是平等的,接下来的两个项目是 比较,等等,直到任一序列耗尽。如果有两个项目 要比较的是它们本身的相同类型的序列, 词典比较是递归地进行的。如果所有的项目 两个序列比较相等,序列被认为是相等的。如果 一个序列是另一个序列的初始子序列,较短 序列是较小(较小)的序列。字典排序 字符串使用Unicode代码点编号来单独订购 字符。在序列之间进行比较的一些例子 类型。
但这对我来说并不清楚。
答案 0 :(得分:6)
这是set
操作,而不是list
。这相当于,
alphaset.issubset(set(str1.lower()))
s&lt; = t
s.issubset(t)的
测试s中的每个元素是否都在t。
见这里: https://docs.python.org/2/library/sets.html
修改:请参阅此处了解Set的当前版本。虽然在旧版本中给出了更简单的解释(用于比较)。
答案 1 :(得分:2)
没有。它正在比较两个sets。所以它将输入字符串转换为小写,然后使用Python的set类型将其与小写字母集进行比较。
这是一种非常有用(快速)的技术,用于比较两个列表,以查看它们共有的成员/差异。
答案 2 :(得分:0)
def pangram(s):
alphabet = set('abcdefghijklmnopqrstuvwxyz')
s = s.replace(' ','').lower()
s= sorted(s)
count = {}
#alphabet could be one sting within '' later sorted, but I just went straight to the point.
#After initializing my dictionary at null, we start the count
for letter in s:
if letter in count:
count[letter] =[]
else:
count[letter] = 1
for letter in alphabet:
if letter in count:
count[letter] =[]
else:
count[letter] = 0
for letter in count:
if count[letter]== 0:
print (letter +' missing!')
print (count[letter]!= 0)