python 学习笔记
显示类型
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import types >>> type([]) <class 'list'> >>> type(1) <class 'int'>
上面试在REPL中操作的,, 如果在源码文件中要显示类型则要加上print
import types print(type([])) a = 123; print(type(a))
常用数据结构
list
list 是可变长度的, 可以动态添加元素, 元素类型不要求统一, 有序,可重复
创建空list , 两种方式
alist = []
blist = list()
直接创建带元素的list
alist = ['one', 'two', 3, True];
在末尾追加元素
alist.append('four') # api list.append(obj)
在指定索引位置增加元素
alist.insert(1, 'one point five') # api list.insert(index, obj)
查询某个索引位置的元素
element1 = alist[0] element2 = alist[2] print(element1) print(element2)
修改某个索引位置的元素
alist[3] = 'three'
删除某个索引位置的元素, 知道索引位置的时候使用
alist = [1, 2 ,3, 4] a = alist.pop(1) # 删除api , 参数 要删除的位置, 返回值 被删除的元素 print(a) # 2 print(alist) #[1, 3, 4] alist.pop() # 不给参数时 删除末尾 print(alist) # [1, 3]
删除除某个元素, 不知道索引位置的时候
alist = [1, 2, 2, 3] alist.remove(2) # 删除api , 参数是想要删除的元素,如果元素值有重复的,只会删除最靠前的。 没有返回值 print(alist) #[1, 2, 3]
获取list 长度
size = len(alist)
print(size)
遍历list
for v in alist: print(v) # v 是元素值
遍历的时候还要拿到索引
for idx, val in enumerate(alist): print(idx, val) # idx是索引, val是元素值
参考:http://stackoverflow.com/questions/522563/accessing-the-index-in-python-for-loops
获取某一个值的元素有几个
list = [1, 2 , 2, 4, 'a', 'a','b'] print(list.count(2)) #2 print(list.count('a')) #2
获取最大元素
llist = [1, 2 , 3, 4, True] max = max(list) # api print(max) # 4
混合类型的list 使用这个api 要小心, 比如 int 和 str混合会出错
list = [1, 2 , 3, 4, 'a'] max = max(list) print(max) 运行报错 Traceback (most recent call last): File "c:\Users\myname\Documents\pythonporjects\test.py", line 5, in <module> max = max(list) TypeError: '>' not supported between instances of 'str' and 'int'
tuple
元组的元素一旦确定不可更改,只能查询, 元组本身也不能增加或删除元素。 元素类型不要求统一, 有序, 可重复
创建空tuple, 两种方式
atuple = ()
btuple = tuple()
空tuple的用处不多 所以通常创建就初始化tuple的元素
atuple = (1, 2 , 2, 4, 'a', 'b') print(atuple)
只有一个元素的tuple 应该这样
atuple = (1, ) print(atuple)
查询元素
atuple = (1, 2 , 2, 4, 'a', 'b') print(atuple[0]) print(atuple[1])
如果尝试修改元素值则会报错
atuple[0] = 0 Traceback (most recent call last): File "c:\Users\myname\Documents\pythonporjects\test.py", line 8, in <module> atuple[0] = 0 TypeError: 'tuple' object does not support item assignment
获取tuple长度
t = (1, 2, 3) size = len(t) #api println(size)
获取某一个值的元素有几个
t = (1, 2 , 2, 4, 'a', 'a','b') print(t.count(2)) # 2 print(t.count('a')) # 2
获取最大的元素, 参考 list 章节
tuple unpacking
t = (1 ,2) a , b = t print(a) # 1 print(b) # 2
参考 http://stackoverflow.com/questions/10867882/tuple-unpacking-in-for-loops
set
set 类似于数学中的集合, 元素无序,元素不可重复
创建空set 只有一种方式
aset = set()
遍历set , 因为无序所以不存在索引
for el in aset: print(el)
遍历一个在遍历时增长长度的set
http://stackoverflow.com/questions/28584470/iterating-over-a-growing-set-in-python
创建空dictionary, 两种方式
adict = {}
bdict = dict()
遍历dictionary
只遍历key
for k in adict: print(k) # k
只遍历value
for v in adict.values(): print(v)
同时遍历key 和 value
for key, value in adict.items(): print(key, value)
参考 http://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops-in-python
list tuple string 可以被切片
时间和日期处理
#!/usr/bin/python # -*- coding:utf-8 -*- import time a = time.time() print("timestamp" , a) a = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) print("now is", a) a = time.localtime() year = a.tm_year print("year is", year)
更多参考 Python 日期和时间 | 菜鸟教程 http://www.runoob.com/python/python-date-time.html
参考
http://www.runoob.com/python/python-tutorial.html
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
http://stackoverflow.com/questions/tagged/python
https://www.dotnetperls.com/python