本文参考书目为《Python基础教程第三版》
从类C语言转而学习Python让我尤为不适应,C语言更能体现硬件底层的细节,而Python相对来说让这些细节变得十分模糊。经过一定的思考后我发现Python的优雅之处恰恰就是屏蔽了这些细节,让编程变得十分简洁高效。Python不像C那样很直白地跟底层接轨,恰恰相反,Python更热衷于跟程序员接轨,因此在学习Python的过程中,不必在意太多被封装了的细节,简单无脑调包才是Python的最大魅力之处。
1. 整除运算: print(3//2)
2. 求幂运算: print(3**2) 相当于
3. 16,8,2进制的表示: print(0xAF,010,0b0101)
4. 取绝对值: print(abs(-1.2))
5. 浮点数取近似整: print(round(2/3))
6. 浮点数向下向上取整:
import math
print(math.floor(32.9)) #相当于int(32.9)
print(math.ceil(32.1)) #向上取整
1. 跨越多行的字符串:
print(”’asdasd
asdasdas
xxxx”’) #用三引号分界,Python3使用的所有字符串都是Unicode字符串
2. 转义符:
print(‘C:\nowhere’) #使用\作为转义符
3. 原始字符串(不用转义符实现):
print(r’C:\nowhere’)
4. 字符编码:
‘Hello,world!’,encode(‘UTF-8’) #转化成UTF-8编码返回二进制字符
只要用encode就能将某个字符串编码为二进制字符。这些二进制字符再decode以下就能得到原来的字符串。
5. 可变字符串:
python中若定义str=’hello’那么str中的字符是不可变的,即便是二进制类型str=b’hello’也是不可变的,如果需要可变二进制字符串,可用如下。
str=bytearray(b'hello') str[1]=ord(b'u') pint(bytes(str)) #这样又转回了bytes类型二进制字符串
6. 精简字符串格式化:
str=”hello %s,%d” % (‘world’,1) #与C类似
或者 str=”hello {0},{1}” .format(‘world’,1) 注意这里{i}中的任意i都能重复出现。
或者 str=”hello {a},{b}” .format(a=’world’,b=1)
还可以 str=”{foo} {0} {bar} {1}”.format(1,2,bar=4,foo=3)
7. 限定宽度格式化:
‘haha{num:10}’.format(num=3),限定num这块字符串宽度为10,注意数字右对齐,字符串左对齐。
如果要同时限定浮点数宽度和精度,则可以用类似{pi:10.2f}。(pi位别名)
如果在限定浮点数宽度和精度基础上再用0填充,则可用类似{pi:010.2f}。
8. 格式化对齐:
str=”{0:<10}\n{0:^10}\n{0:>10}” .format(‘world’) #限定10宽度,分别位左,中,右对齐。
9.填充字符:
‘hello {0:%^15}’.format(‘world!’) #输出为’hello %%%%world!%%%%%’ 。
10. 填充字符放在符号与数字之间:
print( ‘{0:10.2f}\n{1:=10.2f}’.format(pi,-pi) ) 输出结果如下
3.14 - 3.14
11. 字符串方法:
“hello”.center(38) #指定宽度居中对齐。
“hello”.center(38,“*”) #指定宽度居中对齐,并且指定填充符号。
string.find(‘xx’) #串匹配,返回首匹配项索引,失败返回-1。
string.find(‘xx’,1) #串匹配,指定起点。
string.find(‘xx’,1,10) #串匹配,指定起点和终点。
‘+’.join([‘qwe’,’asd’,’xzc’]) #指定字符串连接,输出’qwe+asd+xzc’
str.lower()返回小写
‘This is a test’.replace(‘is’,’eez’) #替换,输出’Theez eez a test’
‘1+2+34+5’.split(‘+’) #拆分返回列表,这里输出[‘1’, ‘2’, ‘34’, ‘5’]
’ haha haha ‘.strip() #删除开头和末尾空白,这里输出’haha haha’。
‘& haha%haha % ‘.strip(‘& %’) #指定删除开头和末尾的字符,这里输出’haha%haha’。
1. 列表和元组:
列表是可以修改的,元组不可以修改。可以推断元组在内部使用的结构更简单且更高效。
Python中的列表中能包含许多数据类型,而且是不同的数据类型,这与C的数组差异极大。
2. 列表的嵌套使用:
edward=['Edward Gumby',42] john=['Join Smith',50] database=[edward,john] #得到 database=[['Edward Gumby', 42], ['Join Smith', 50]]
3. 索引:
Python中的索引都是以0开始,且可以为负值,相当于一个循环索引(-1表示最后一个元素)。
l=['hello',24,'gg'] l[0] #输出'hello' l[0][1] #输出'e'
4. 切片:
对于上述l列表,如果我要一次性取出前两个,那我不需要迭代索引,用切片即可。
l[0:2] #这里 0:2 代表的索引范围是 0 <= i < 2 。当然,如果 :省去左右部分即取到两端。
如果需要取值步长还可以写为 l[左端点:右端点+1:步长],如 l[0:10:2]步长即为2。
5. 某串是否存在与另一串之中:
str=’ssrwxx’
‘rw’ in str #返回True,这里关键字为in。
当然,对于l=[‘ssrwxx’,256]这种,’rw’ in l 就返回False了,由于这个in只对最上一层起作用,因此如果是’ssrwxx’ in l 就能返回True了。
我们很容易用这个操作来检查用户名以及密码。
database=[ ['user1','pwd1'], ['user2','pwd2'] ] username=input('User name:') pwd=input('pwd:') if [username,pwd] in database: print ('Access granted')
6. 列表中元素个数、最大值、最小值:
分别为 len(l),max(l),min(l),其中最大值和最小值必须保证列表中元素类型一致。
7. 字符串变列表:
list(‘Hello’) 输出即为 [‘H’, ‘e’, ‘l’, ‘l’, ‘o’]
8. 列表按索引更改:
这个操作跟C类似,即list[索引]=你想设定的值。
9. 列表按索引删除:
del list[索引值] ,非常方便!
10.切片赋值:
name[2:]=list(‘ar’) 这样可以将串name第二个字符之后的所有变成ar
name=list('abcdefg') name[2:]=list('ar') #得到['a', 'b', 'a', 'r']
切片操作还能够实现删除、插入,注意 list[1:1]=..为将list[1]之前处插入列表。
11.列表方法:
list.append(input) #附加到列表末尾,单元素。
list.clear() #就地清空列表。
b=a.copy() #创造出一个与a一模一样的b,注意b=a只是拷贝了指针。
[1,2,1,1,2,1].count(1) #计数。
a.extend(b) #将列表b附加到列表a末尾,多元素,就地执行,a+b效率比这个低。
[1,22,32,44].index(22) #返回1,即根据内容找索引。
[1,2,3,6].insert(3,’four’) #在第3个元素之前插入’four’。
[1,2,3,6].pop(0) #删除0号,返回被清除值,如果不指定编号则取出最后一个元素。
list.remove(‘xx’) #按内容删除。
list.reverse() #就地逆置。
list.sort() #就地排序,若要赋值,则用a=sorted(b)。
x.sort(key=len) #按长度排序。
x.sort(reverse=True) #递减排序。
12. 列表转元组:
tuple([1,2,3]) = (1,2,3)
1. 创建字典:
字典就是一个个键:值对,如dic={‘a’:123,’b’:’hello’,’cc’:’world’}
也可以用映射创建字典,dic=dict([[‘a’,’b’],[123,’x’]])
还可以这样,dic=dict(a=123,b=’hahaha’)
当然字典也可以嵌套{ ‘a’:{‘a1’:0,’a2’:1},’b’:{‘b1’:’haha’,’b2’:23} }
2. 字典的成员资格:
如果dic={‘a’: 123, ‘b’: ‘hahaha’},则’a’ in dic = True,123 in dic=False
可见in只对键起效果。
3. 字典按键查找值:
dic={'a':123,'b':'hello','cc':'world'} #那么dic['cc']=world dic={ 'a':{'a1':0,'a2':1},'b':{'b1':'haha','b2':23} } #那么dic['a']['a1']=0
4. 字典方法:
dic.clear() #就地删除字典。
a=b.copy() #深拷贝字典。
{}.fromkeys([‘name’,’age’]) #用键创建字典,默认值都是None。
dic.get(‘key’) #按键查找值,如果查找不成功返回None。
dic.get(‘key’,’err’) #按键查找值,如果查找不成功指定输出某字符串。
dict.items() #返回字典列表视图,如it=dict.items() ,len(it)为字典元素个数,(k,v) in it审查。
list(dict.items()) #将字典所有键值输出到列表。
dic.keys() #返回字典键的列表视图,与items类似。
dic.pop(‘key’) #指定键弹出,返回弹出值。
dic.popitem() #随机弹出,返回弹出键和值。
dic.setdefault(‘key’,’value’) #如果key不存在则加入key:value,若存在则不影响。
dic.update(x) #用x来更新字典dic,如果在dic中存在相同的键则替换,否则添加。
- sss: