【Python】Python学习之刷题


整合自网络及 python菜鸟网站

简单语句

array[row][col]:array二维列表显示

while 判断条件:
       执行语句
if 判断条件1: 
	执行语句1……
elif 判断条件2:  
	执行语句2……
else:  
	执行语句4……
for i in array:
	...

range(start, stop, step):start默认是从 0 开始。step默认为1。


Python 运算符

运算符

布尔值取反 flag = not flag


判断长度,取整数等

len(A):二维列表行数
len(A[0]):二维列表列数
len(A[i]):多维列表第i维(行)的长度(列数
str.count(sub, start= 0,end=len(string)):统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
list.count(obj):统计某个元素在列表中出现的次数。

取整:
1.向上取整 0 = math.ceil(-0.5), 1 = math.ceil(0.3)
2.向下取整(整数商) -1 = math.floor(-0.3),0 = math.floor(0.9) / (-1) // 2
3.四舍五入取整 2 = round(-1.5)
4.向0取整 int(-0.5) 取整方向总是让结果比小数的绝对值更小
取余:
7 % 4 = 3(商 = 1 或 2,1<2,取商=1)
-7 % 4 = 1(商 = -1 或 -2,-2<-1,取商=-2)
7 % -4 = -1(商 = -1或-2,-2<-1,取商=-2)
-7% -4 = -3(商 = 1或2,1<2,取商=1)

幂运算2**n
返回error return -1

double和float类型判断为零:
1.低版本:

def isclose(a, b, rel_tol=1e-09, abs_tol=0.0):
    return abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)

2.>Python 3.5: math.isclose

进制转换:
int("0xa",16):将16进制字符串转换为10进制

>>> int("0xa",16)
10
# 获取用户输入十进制数
dec = int(input("输入数字:"))	#5
 
print("十进制数为:", dec)	#5
print("转换为二进制为:", bin(dec)) 	#"0b101" 字符串
print("转换为八进制为:", oct(dec))	#"0o5"
print("转换为十六进制为:", hex(dec))	#"0x5"

list(map(int,input().split())):{‘45’,‘56’}转换为int的列表[45.56]

sys.stdin.readline().用法
input() 函数接受一个标准输入数据,返回为 string 类型。

import sys
try:
    while True:
        print('Please input a number:')
        n = int(sys.stdin.readline().strip('\n')) #strip('\n')表示以\n分隔,否则输出是“字符串+\n”的形式
        print('Please input some numbers:')
        sn = sys.stdin.readline().strip()#若是多输入,strip()默认是以空格分隔,返回一个包含多个字符串的list。
        if sn == '':
            break
        sn = list(map(int,sn.split())) #如果要强制转换成int等类型,可以调用map()函数。
        print(n)
        print(sn,'\n')
except:
    pass 


集合

set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

>>> x = set('runoob')
>>> y = set('google')
>>> x, y
({'b', 'r', 'u', 'o', 'n'}, {'e', 'o', 'g', 'l'})   # 重复的被删除
>>> x & y         # 交集
{'o'}
>>> x | y         # 并集
{'b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'}
>>> x - y         # 差集
{'r', 'b', 'u', 'n'}

注意:创建一个空集合必须用set()而不是{ },因为{ }是用来创建一个空字典。

set.add() 方法用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。


字符串

str[::-1]:逆序输出
str.replace(old, new, max)
把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
注意:replace 不会改变原字符串的内容。

str.split(str="", num=string.count(str))
指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串(使用num个分隔符)。分隔符包括空格、换行(\n)、制表符(\t)等。
举例:

str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( );       # 以空格为分隔符,包含 \n
print str.split(' ', 1 ); # 以空格为分隔符,分隔成两个

输出:
[‘Line1-abcdef’, ‘Line2-abc’, ‘Line4-abcd’]
[‘Line1-abcdef’, ‘\nLine2-abc \nLine4-abcd’]

str.join(sequence)
将序列中的元素以指定的字符连接生成一个新的字符串。
举例1:

str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq );

输出:a-b-c
举例2:

''.join(c if c!=' ' else '%20' for c in s)

举例3:
" ".join(map(str,res)) + " ":将整数数组拼接成字符串。
举例4:
"".join(str)使字符串{"1","2"}转换为"12",与+作用相同。

str = "4"
str += "3" -->"43"


 `str.strip() `
 用于移除字符串头尾指定的字符(默认为空格)或字符序列。
```python
str = "*****this is **string** example....wow!!!*****"
print (str.strip( '*' ))  # 指定字符串 *

输出:this is ** string ** example…wow!!!

str.count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。

str.count(sub, start= 0,end=len(string))

str.startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False,直接用str[0]当字符串为空时存在越界。
str.isdigit() 方法检测字符串是否只由数字组成
str.islower() 方法检测字符串是否由小写字母组成。
str.isupper() 方法检测字符串是否由大写字母组成。
str.lower()转换字符串中所有大写字符为小写。

ord() 函数是 chr() 函数(对于 8 位的 ASCII 字符串)的配对函数,它以一个字符串(Unicode 字符)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值。

>>>ord('a')
97
>>> ord('€')
8364
>>>

chr() 用一个整数作参数,返回一个对应的字符。


列表

max(map(max,dp)):取二维数组dp中的最大值
list.append(obj):在列表末尾添加一个新的对象。
list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
insert(index, obj) 函数用于将指定对象插入列表的指定位置。

判断列表是否为空
if len(mylist): 或者 if mylist: 或者 if mylist is None

逆序输出
1.mylist[::-1]
2.mylist.reverse()

链表结构

list.pop([index=-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

list1 = ['Google', 'Runoob', 'Taobao']
list_pop=list1.pop(1)
print "删除的项为 :", list_pop
print "列表现在为 : ", list1
#结果
删除的项为 : Runoob
列表现在为 :  ['Google', 'Taobao']

初始化二维数组(a,b)
c = [[0]*5 for _ in range(5)]
c = [[0 for _ in range(5)] for _ in range(5)]
不能用c = [[0]*5 ]*5
原因

list.sort()对已存在的列表进行操作,调用其没有返回值;
sorted(a)函数是返回一个新的list,不在原来的list上进行操作,调用其返回一个排好序的新的list。
sorted(a, key=len, reverse=True)
使用lambda应对各种复杂情况的排序,包括list嵌套dict
内置函数sorted的10个小tips
sorted()按照字典序排序
python字典排序 关于sort()、reversed()、sorted()


字典

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name']) --> Runoob
print ("dict['Age']: ", dict['Age'])  --> 7

defaultdict
当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值

from collections import defaultdict
dict1 = defaultdict(int)	#输出:0
dict2 = defaultdict(set)	#输出:set()
dict3 = defaultdict(str)	#输出: #(空字符串)
dict4 = defaultdict(list)	#输出:[]

key in dic:检测key是否存在
dict = {‘Name’: ‘Runoob’, ‘Age’: 7}

# 检测键 Age 是否存在
if  'Age' in dict:
    print("键 Age 存在")
else :
    print("键 Age 不存在")

正则表达式re

正则化
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
re.search('[0-9]',str) 扫描整个字符串并返回第一个成功的匹配。


队列

Python 队列(Queue)用法
双边队列:

q = queue.deque()
q.append(123)
q.append(456)
q.appendleft(780)
print(q)
print(q.pop())
print(q.popleft())
-----------------------------
deque([780, 123, 456])
456
780

直接引用。
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。
判断是深拷贝还是浅拷贝,只要测试下在b有子对象时,看看修改a子对象时,b子对象是不是也修改了
图解Python深拷贝和浅拷贝

对于list而言
直接引用 a=b a与b引用同一个地址
浅拷贝 a=b[:] a与b引用不同的地址

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值