我试图从字母表中创建一组字母,我不确定为什么代码不工作。 Python给我一个错误,说“全局名称a”没有定义。“有任何想法吗?先谢谢你。在python中创建一个填充字母表的字符集
s = set()
s = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
我试图从字母表中创建一组字母,我不确定为什么代码不工作。 Python给我一个错误,说“全局名称a”没有定义。“有任何想法吗?先谢谢你。在python中创建一个填充字母表的字符集
s = set()
s = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
a
,b
,...自己不是字符串,它们的名字。 Python字符串必须用单引号('a'
),双引号("a"
)或三引号("""a"""
或'''a'''
)括起来。所以,你的代码的正确版本是:
# s = set() - this is useless, the next line is already creating a set
s = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}
话虽如此,这样做的更清洁的方法是使用Python的内置set和string.ascii_lowercase像这样:
import string
s = set(string.ascii_lowercase)
我喜欢这个答案,因为它至少给的解释一点点,不只是“在这里,做这个,再见!”。但是另外一点是,'s = set()'行不起任何作用。我明白了:OP有它,所以这个答案也是如此。但是,当你说“你需要拥有”时,会立即产生无用的陈述,这有点误导。 –
谢谢,我改变了措辞。好点? – s16h
嗯。也许会好一点。就个人而言,我不会重复OP的无用代码行。另外,我不认为关于字符串的新的额外信息是必要的。重要的是要传达的是名称和字符串是不同的东西;你在前面做到了。 –
试这
import string
s = set(string.lowercase)
请注意'string.lowercase'在Python 3中不起作用,最好使用'string.ascii_lowercase'。 –
@lenik的回答是最好的,但它的好,记住,每个字符串也是一个迭代序列,并可以传递给set()
。因此,而不是一个字母的文字列表你可以:
letters = set("abcdefghijklmnopqrstuwxyz")
谢谢。你会感到惊讶,'string.lowercase'正好返回你提到的字符串,但更容易输入,并且不需要过度眯眼以试图找出是否有一些字母丢失=) – lenik
我知道,只是想通过给出另一种方法,可能对OP有用。 –
顺便说一句,相信如果一些奇怪的原因,我不能使用'string.ascii_lowercase'我宁愿'设置(地图(字符,范围(ord('a'),ord('z')+ 1)))'比手动输入所有这些字母... PS。 'set(map(chr,range(* map(ord,'az'))))'也可以 –
字符串,如单字母必须在引号... – MattDMo