- python中交换两个值,不需要像一些编程语言一样设置临时变量,可以直接通过x,y = y,x来进行交换
x = 2 y = 3 x,y = y,x print(x,y)
- python的基本类型
- number(数字类型)
- 整数 int ,在python中只有一种整数类型就是int,其他语言可能有short int long等
- 浮点数 float,在python中没有单双精度之分,因为在python中float中本来执行的就是其他语言中的双精度浮点
- bool类型,注意的是python中支持的形式是 False 和 True ,bool是属于数字类型的大分类
- complex 复数类型
- str 字符串类型
- 单引号、双引号裹起来表示字符串 1是数字类型 ‘1’是个字符串类型
- 字符串是不可变的
- 三个单引号块(或者三个双引号块)可以将不能直接显示的字符转译
str = ''' hello word! hello word! hello word! ''' print(str)
3.转译字符
-
\ ,反斜杠最为常见
-
如果一个字符串中有要转译的字符可以在整个字符串前r,比如
print(r'c:\web\php')
-
- number(数字类型)
-
切片
-
字符串、列表、元组等可以进行切片[start:end:step]
-
当切片的end超过了len长度,切片会自动取最大长度len作为end
-
- python进制
- 二进制标识符 0b** ,比如0b10 = 2, 0b11 = 3,转换为二进制的方法bin()
print(bin(10)) print(bin(0o10)) print(bin(0x10))
- 八进制标识符 0o**,比如0o10 = 8 ,0o11 = 9,oct() 函数将其他进制转换为八进制
print(oct(10)) print(oct(0x10)) print(oct(0b10))
- 十进制 使用 int() 将其他进制转换为十进制
- 十六进制标识符 0x,比如0x10 = 16 ,0x1F= 31,使用hex()函数可以将其他进制的数转换为十六进制
print(hex(10)) print(hex(0o10)) print(hex(0b10))
- 二进制标识符 0b** ,比如0b10 = 2, 0b11 = 3,转换为二进制的方法bin()
- python中的list列表,类似于PHP中的数组,PHP是通过函数如array_push、array_pop、array_shift、array_unshift来向数组中增加剔除元素的,python中的list则是通过L.append()、L.insert()来添加添加、插入元素,使用L.pop()剔除元素,不同点在与PHP是用数组模仿列表,并不是真正意义上的列表。
- python中的tuple元组,是一种有序的列表,但是tuple一旦创建后就无法更改,创建方法也与list有别,list是L=[],而元组是t=(),除了不能修改元组中的元素外其余的与list是一致的。元组有个要注意的地方,那就是元组使用的(),所以当元组内是氮元素的时候需要多加一个‘,’比如 t = ('PHP',),这样可以与()分开,避免歧义。
- str、list、tuple都是有序的序列可以通过下标获取对应的值,序列可以进行‘ + ’ ‘ * ’ 运算
- 如果要判断一个element是否在序列中,可以使用 in 关键词,比如 3 in [1,3,4,6] , 如果要判断不在某一个序列中使用not in 即可
- 字符串转换为ask码使用ord函数 , 例如 ord(‘w’) = 119
- 集合 set 是个无须的列表 用{1,2,3} 花括号标识集合set
- 两个集合的差集,符号 ‘ - ’ ,比如 {1,2,3,4} - {2,3} = {1,4}
- 两个集合的交集,符号 ‘ & ’ ,比如{1,2,3,4} & {2,3} = { 2,3}
- 两个集合的并集并且去重 ,符号 ‘ | ’ ,比如 {1,2,3,4,5} | {4,5,6} = {1,2,3,4,5,6}
- 定义一个空的set,需要使用set函数,比如 set()
- 字典dict,key-value存储方式
- 定义方式{key:value, key1:value1, ....}
- 字典中不允许有重复的key
- 字典的键不一定是字符串,也可以是数字字符等
- 字典里的value可以取python中任意的数据类型
- 一个空的字典可以直接用 {} 来表示
- 参数分拆https://docs.pythontab.com/python/python3.4/controlflow.html#tut-unpacking-arguments
- 场景 有一个list = [3,6] 需要将这个list传递给range,但是range接受的是具体的start end参数,这个适合可以使用分拆列表符 * 比如 range(* list)
- 分拆元组符 ** **tuple
- python实现堆栈(后进先出)性能很高,通过list的append() pop()方法可以快速实现,但是若要实现队列(先进先出)使用insert进行插入然后pop弹出 性能很低,很慢,因为他队列的插入删除需要移动整个队列,所以如果要是实现队列就用collection.deque这个类文件提提供的方法,它为在队列首尾插入删除而设计
#!/usr/bin/evn python # -*- coding:utf-8 -*- # author:jiangyu01 # time:2019/3/5 9:33 from collections import deque queue = deque(['PHPerJiang','CoderJiang','PythonerJiang']) queue.append('JavaerJiang') queue.appendleft('GoerJiang') queue.popleft() queue.pop() print(queue) #deque(['PHPerJiang', 'CoderJiang', 'PythonerJiang'])
-
for循环有种方式叫列表推到式,由一个包含表达式的括号(没有括号也可)组成,表达式后面跟随一个for句子,之后有0个或者多个fo或者if子句。结果是一个列表,由表达式和表达式后面的for 、if子句上下文计算而来的结果构成
a = range(10) a = list(a) print([x*x for x in a ]) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
就是将循环中的每一个元素都进行解析
a = range(10) a = list(a) print([x*x for x in a if x > 3]) #[16, 25, 36, 49, 64, 81]
可以通过添加条件语句来进行筛选
print([(x, y) for x in [3, 4, 5] for y in [4, 3, 7] if x!=y]) #[(3, 4), (3, 7), (4, 3), (4, 7), (5, 4), (5, 3), (5, 7)]
等同于
resule = [] for x in [3, 4, 5] : for y in [4, 3, 7]: if x!=y : resule.append((x, y)) print(resule) #[(3, 4), (3, 7), (4, 3), (4, 7), (5, 4), (5, 3), (5, 7)]
(python真的是超级精简了,如果我用PHP做内外循环代码量巨多)
- lambda简短匿名函数的使用,目的是为了减少单行函数的存在,如果可以用for in if来实现坚决不用lambda,为了代码可读性
g = lambda x:x+1 print(g(1)) #2
lambda中 x 为匿名函数要输入的参数 x+1是程序运算过程等同于
def xxx(x) : return x+1 print(xxx(1)) #2
-
类型转换
-
字符串转列表 a = list(str)
-
字符串转元素 a = tuple(str)
-
列表转元组 a = tuple(list)
-
元组转列表 a = list(tuple)
-
列表转字符串 a = "".join(list)
-
元组转字符串 a = "".join(tuple)
-
-
行列转换
mylist = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], ] print([[row[i] for row in mylist] for i in range(4)]) #[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
等同于
mylist = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], ] result = [] for i in range(4) : result_row = [] for element in mylist : result_row.append(element[i]) result.append(result_row) print(result) #[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
-
元组
-
元组封装:
#元组封装 myTuple = 'PHPerJiang','CoderJiang','PythonerJiang' print(myTuple) #('PHPerJiang', 'CoderJiang', 'PythonerJiang')
声明元组的时候可以不用加()这个是应用了元组封装的特性
-
序列拆解:
#序列拆封 x,y,z = myTuple print(x,y,z) #PHPerJiang CoderJiang PythonerJiang
将元组赋值给对应数量的变量对应数量的变量是应用了序列拆解的特性
-
-
字典循环:
mydict = {"name":"Pythoner", "sex":"男", "age":24} for k, v in mydict.items() : print(k,v) #name Pythoner #sex 男 #age 24
使用items可以同时解析除字典的键和值
-
序列循环并返回索引
mylist = [5,2,6,2,8] for i,x in enumerate(mylist) : print(i, x) # 1 2 # 2 6 # 3 2 # 4 8
使用enumerate将序列生成一个带索引的序列
-
zip()函数用于可迭代的对象作为参数,将对象中的元素打包成一个个元组,然后由这些元组组成的对象,在python2会返回一个列表但在python3会返回对象
a = list(range(3)) b = list(range(6)) c = zip(a,b) c = list(c) print(c) #[(0, 0), (1, 1), (2, 2)] a,b = zip(*c) print(list(a),list(b)) #[0, 1, 2] [0, 1, 2]
如果两个参数列表不一样长则按照最短长度取,若想要列表需要手动list
-
格式化输出
mydict = {'name':'PHPerJiang','age':23} print('my name is {name},and i am {age} years old'.format(**mydict)) #my name is PHPerJiang,and i am 23 years old
使用格式化输出str.format() 可以传字典 **mydict是将字典按照键名反解析成变量
-
文件处理
fp = open('test.txt','a+'); fp.write('hello,word\n'); fp.close() fp = open('test.txt','r') print(fp.read()) print(fp.tell())
追加模式打开文件并写入然后关闭再打开读取全部并获取指针位置,操作完文件后需要调用file.close()方法关闭资源
with open('test.txt','r') as fp : print(fp.read()) print(fp.closed) # hello,wordhello,wordhello,wordhello,wordhello,wordhello,word # hello,word # hello,word # hello,word # hello,word # hello,word # hello,word # hello,word # hello,word # hello,word # # True
可以使用关键词with打开文件,这样当操作完文件后文件会自动关闭
-
-
Python随笔
最新推荐文章于 2020-09-23 16:50:12 发布