python基本语法
目录
数据结构
1,字符串
2,列表
3,元组
4,字典
5,集合
字符串
1,字符串基本知识
转义字符:反斜杠(\)。\',\'',\t,\n,\\。除号是正斜杠,正斜杠用于目录。
原始字符串:字符串前加r。忽略所有的转义字符,打印出字符串中所有的反斜杠。例如,r’that\’s my cat’。不能在原始字符串结尾输入反斜线,否则会报错。
多行字符串:①三重引号②行末加转义字符\折行。若创建的字符串包含单引号或双引号,也可将字符串放入三引号中,避免歧义。
多行注释:三重引号。没有赋值属于多行注释,赋值属于多行字符串。
字符串索引与切片:和列表类似,切片时不包括结束下标。左闭右开。
字符串的in和not in操作符:精确匹配,区分大小写。
字符串也可以用于for循环:字符串也属于序列型数据类型。
字符串的连接与复制:+,*。注意,连接字符串和数字时,代码必须显式的将整数转换为字符串,否则会报错,因为python不能自动完成转换。同时要注意,字符串复制时,数字必须为整型,否则会报错。例如,'tianyuan' * 5。
字符串格式化:
① 占位符%s叫转换说明符,s表示值会被格式化为字符串,若不是字符串,会用str()函数将其转换为字符串,只有元组和字典可以格式化一个以上的值。
1 print('I get %s score.' % 100) 2 print('I get %s score, ross just get %s score.' % (100,90))
② d指整数,f是浮点数,e是小写科学计数法,E是大写科学计数法,s是字符串。其他格式参考《python基础教程》p46。
③ %+10.2f,10指字符串宽度,2指数字精度,宽度前面还可以放置一个标志,0代表用0填充,减号代表左对齐,加号代表数字前面带符号,空格代表正数前面空一位。
1 '%+10.2f' % 3.1415926 2 '% 10.2f' % 3.1415926 3 '%010.2f' % 3.1415926 4 '%-10.2f' % 3.1415926
' +3.14'
' 3.14'
'0000003.14'
'3.14 '
④ format()方法。
1 'huyuan {} tianyuan'.format('love')
huyuan love tianyuan
2,字符串方法
① upper(),lower()。字符串大小写转换,非字母字符保持不变。
② title(),capitalize()。分别用于每个单词首字母大写和句子首字母大写转换。
③ isupper(),islower()。判断字符串是否为大小写。纯数字无所谓大小写,返回值均为False;既有字母又有数字的相当于只判断字母。
④ isalpha(),isalnum(),isdecimal(),isspace(),istitle()。分别判断字符串是否只包含字母并且非空;只包含字母和数字并且非空;只包含数字并且非空;只包含空格、制表符和换行并且非空;只包含以大写字母开头后面都是小写字母的单词。一般用于验证用户输入。
⑤ startswith(),endswith()。返回True,如果他们所调用的字符串以该方法传入的字符串开始或结束。
⑥ join(),split()。split(sep=None,maxsplit=-1)默认以各种空白字符分割,诸如空格、制表符或换行符;第二个参数表示最大分割数,默认值为-1,表示最大分割数没有限制,函数会尽可能进行分割。例如,’,’.join([‘cat’,’dog’,’bear’]),str.split(‘\n’),str.split(‘,’)。
⑦ rjust(),ljust(),center()。该字符串方法返回调用他们的字符串的填充版本,通过插入空格来对齐文本。第一个参数是一个整数长度,用于对齐字符串;第二个可选参数将指定一个填充字符,取代空格字符。例如,str.rjust(50,'*')。
⑧ strip(),rstrip(),lstrip()。该方法删除字符串两边的空白字符,包括空格、制表符和换行符。也可以删除其他字符,只需传入参数,告诉它需要删除的字母,传入strip()方法的字符串中,字符的顺序并不重要。
⑨ index(),rindex(),find(),rfind()。str.index(x)和str.find(x)方法功能相同,返回传入的字符串x出现在字符串对象str中的最左边的位置;同理,str.rindex(x)和str.rfind(x)方法功能相同,返回传入的字符串x出现在字符串对象str中的最右边的位置。区别在于,若x不在str对象中,find()和rfind()返回值为-1,而index()和rindex()会报错。
⑩ replace()。该方法返回某字符串的所有匹配项均被替换后得到的字符串。例如,’I like you’.replace(‘like’,’donot like’) 输出’I donot like you’。
⑪ count()。返回一个字符串在另一个字符串中出现的次数。没有时返回0,不报错。
列表
1,列表基本知识
列表也是一个值,它是由多个表项构成的序列。
列表的索引与切片:
① 可以用多重下标提取嵌套列表中的单个值。
② 切片是显式复制的好方法(和数组完全不同,数组切片是视图),列表没有copy()方法。
③ 切片是左闭右开的。
④ 第一个元素的索引是0,最后一个元素的索引是-1,既可以从左边开始索引,也可以从右边开始。
用下标改变列表中的值:直接赋值,例a[1]=5。
用del语句从列表中删除值:删除列表中已知下标处的值,就地修改。例,del a[1]。del也可以删除整个变量,此后再引用该变量会引发(NameError)错误。
多元赋值:变量的数目和列表的长度必须严格相等。例,a,b=list[:2],a,b=tuple(:2),a,b=x1,x2。
增强赋值:+=,-=,*=,/=,%=。
显式复制列表和嵌套列表:可以用copy模块的copy()和deepcopy()函数来显式复制列表和嵌套列表。例,import copy。list2=copy.copy(list1)。
列表连接与复制:类似字符串的连接与复制,采用+和*操作符。例,[1,2]+[3,4]=[1,2,3,4],[1,2]*2=[1,2,1,2]。
len()函数:取得列表的长度。
列表用于for循环:例,for i in range(len(list)),for i in list。
列表生成式:例如,a=[i for i in ‘python’];a=[i for i in range(len(list1)) if list1[i]=10];a=[[i,j] for i in x for j in y]。第二个类似于高阶函数filter。
in和not in操作符(成员运算符):判断一个值是否在列表中。
元组:元组与列表类似,只是元组与字符串一样,是不可变的。基于安全性的考虑,有时可以使用元组,你可以用元组告诉所有读代码的人,你不打算改变该序列的值。可以用list()和tuple()函数来转换类型。
range类型:range()函数生成一个等间隔的整数序列,是可迭代的,可以作为list()函数或tuple()函数的传入参数。
引用:在变量必须保存可变数据类型的值时,例如列表和字典,python就使用引用;对于不可变的数据类型的值,例如字符串、整型和元组,python变量就保存值本身。尤其是函数调用的时候,引用的概念非常重要。可以用copy模块的copy()和deepcopy()函数来显式复制列表和嵌套列表。
2,列表的方法
① index(value,[start,[stop]])。传入一个值,如果该值存在于列表中,就返回它的下标;如果该值不在列表中,就报错。如果列表中存在重复的值,就返回它第一次出现的下标。[]表示参数可选。该方法还可以用于查找切片中值的索引。
② append()和insert()。返回值为None,列表就地修改。append()方法调用,将参数添加到列表末尾。insert()方法的第一个参数是新值的下标,第二个参数是要插入的新值,insert()方法可以在列表任意下标处插入一个值。
③ extend()。append()方法一次只能增加一个元素,而extend()方法一次可以增加多个元素,该函数的传入参数为一个可迭代对象。
④ remove()。给remove()方法传入一个值,它将从被调用的列表中被删除。如果该值在列表中出现多次,只有第一次出现的值会被删除,如果该值不在列表中,则报错。如果知道想要删除的值在列表中的下标,del语句就很好用;如果知道想要从列表中删除的值,remove()方法就很好用。
⑤ pop()。用于删除一个列表最右端的元素,并打印出删除的元素值。也可传入一个参数,指定删除列表某索引处的值,类似于del语句。
⑥ sort()。默认升序,指定reverse关键字参数为True,让sort()方法按逆序排序。该方法就地修改。既有数字又有字母时,顺序时数字在前,逆序时数字在后。
⑦ reverse()。颠倒次序。和上一个方法中的reverse参数作用不同。
⑧ count()。传入一个值,返回列表中该值出现的次数。没有时返回0,不报错。
元组
1,元组基本知识
元组的创建:
① t1 = (),t1=tuple()。空元祖。
② t1 = (50,)。元组中只包含一个元素时,需要在元素后面添加逗号。
③ t1 = tuple([50,20])。
元组的修改:元组与列表不同,元组中的元素值是不允许修改的,但我们可以对元组进行连接组合。同字符串和列表一样,用+和*操作符。
元组的删除:元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组。
2,元组的方法
① index(x, [start, [stop]]))。返回元组中start到stop索引中第一个值为x的元素在整个元组中的索引。如果没有匹配的元素就会返回一个错误。
② count(x)。返回x在元组中出现的次数。
字典
1,字典基本知识
尽管字典是不排序的,但可以用任意值(不可变数据类型,不一定总是字符串)作为键,这一点让你能够用强大的方式来组织数据。
字典的创建:
① {‘date’:’20170101’,’close’:3800};
② dict(date=’20170101’,close=3800);
③ dict([(‘date’, ’20170101’),(‘close’,3800)]);
④ dict(zip([‘date’,’close’],[‘20170101’,3800]))。等价于第三项。
⑤ {k:v for (k,v) in zip(['beijing','shenzhen','haikou'],[60980,49390,24000])}。for后面k,v加不加括号都一样。字典生成式。
⑥ dict.fromkeys(seq,val)。创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值。例,dict.fromkeys(['a','b'],0)。
字典元素的增加:直接赋值。例如,dict1[‘open’]=3780。
字典元素的删除:del语句。例如,del dict1[‘open’]。
in和not in操作符:判断一个键或值是否在字典中。例如,str in dic == str in dic.keys(),str not in dic.values()。
漂亮打印:pprint模块的pprint()函数和pformat()函数,它们将“漂亮打印”一个字典的字。如果字典本身包含嵌套的列表或字典,pprint().pprint()函数就特别有用。通常把一些常用配置数据通过pprint.pformat()函数保存为py格式的文件,以后可以通过导入模块来调用变量。很有用。例,f=open('code_name.py','w');
f.write('code_name_dict = '+pprint.pformat(code_dict)+'\n');f.close()。其中code_dict是一个字典。
2,字典的方法
① keys(),values(),items()。返回类似列表的值,但不是列表,可以用于for循环。可以采用list()函数将返回值转换为列表数据类型。可以用多元赋值的技巧,在for循环中将键和值赋给不同的变量。for k,v in dic.items()。
② get()。它有两个参数,第一个参数是要取得其值的键,第二个参数是如果该键不存在时,返回的备用值。例如,dic.get(‘cup’,0)。
③ setdefault()。它有两个参数,第一个参数是要检查的键,第二个参数是如果该键不存在时,要设置的值。例如,dic.setdefault(‘color’,’black’)。该方法可以确保一个键存在。
④ update()。更新键的值。例如,dict1.update(close=1800),dict1.update(dict2)。
⑤ clear()。清空字典。
⑥ copy()。显式复制。经常用于可变数据的复制。很多数据类型都有这个方法。列表没有这个方法,可以使用copy模块的copy和deepcopy函数。
⑦ has_key(key)。如果键在字典里返回true,否则返回false。等价于in操作符。
⑧ pop(key)。删除一个键并返回它的值,类似于列表的pop。
集合
1,集合基本知识
集合中的元素没有顺序关系,也没有重复的元素。利用这个特性,可以检查两个列表是否包含相同的元素。例如,判断set(list1)==set(list2)。
集合的创建:
① 以花括号包住集合元素;
② 将集合元素以序列的形式传入内置函数set()。
③ 如果要利用字符串中的个别字符来创建集合,必须使用set()函数。若以花括号包住字符串,python仍会创建一个集合,只不过整个字符串会被当成一个单独的元素。
④ 集合推导法。类似于列表生成式。
⑤ 列表和字典不能嵌入到集合中,但是元组是可以嵌入的。也就是说列表和字典不能作为集合的元素存在。
2,集合的方法:
① add()。增加元素。
② update(s2)。用s2中的元素修改集合,即集合现在包括s2的成员。
③ remove()。删除元素。若没有该元素,则报错。
④ discard(x)。如果x是集合中的元素,从集合中删除对象x。
⑤ pop()。删除集合中的任意一个对象,并返回它。
⑥ clear()。删除集合中的所有元素。
⑦ copy()。复制。
⑧ 集合的运算(多个集合之间也可以进行集合运算):
① set1.union(set2)。等价于set1|set2,表示并运算。
② set1.intersection(set2)。等价于set1&set2,表示交运算。
③ set1.difference(set2)。等价于set1-set2,表示差运算。
④ set1.symmetric_difference(set2)。等价于set1^set2,表示对称差运算,返回除了两集合共有元素以外的所有元素。
⑤ set1.issubset(set2)。等价于set1<=set2,判断set1是否为set2的子集。
⑥ set1.issuperset(set2)。等价于set1>=set2,判断set2是否为set1的子集。
⑦ set1.isdisjoint(set2)。判断两集合是否无交集,无交集返回True。

浙公网安备 33010602011771号