数组 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 print ("===一维数组===" )print ([i * 2 for i in range (10 )])print ([i * i for i in range (10 )])print ([i * i for i in range (10 ) if (i % 3 ) == 0 ])print ([(x, y) for x in range (3 ) for y in range (3 )])print ('' )print ("===二维数组===" )a = [[3 ] * (i + 1 ) for i in range (3 )] print (a[2 ])print ('' )print ("===乘法的问题===" )a = [[1 , 2 , 3 ]] * 3 a[1 ][1 ] = 100 print (a)print ('' )print ("===解决方法===" )a = [[1 , 2 , 3 ] for i in range (3 )] a[1 ][1 ] = 100 print (a)
===一维数组===
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[0, 9, 36, 81]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
===二维数组===
[3, 3, 3]
===乘法的问题===
[[1, 100, 3], [1, 100, 3], [1, 100, 3]]
===解决方法===
[[1, 2, 3], [1, 100, 3], [1, 2, 3]]
字典 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 print ("===初始化===" )d = {'a' :1 , 2 :'b' , 'c' :3 , 4 :'d' } print (d)print ('' )print ("===获取长度===" )print (len (d))print ('' )print ("===根据key读写===" )d['a' ] = 100 d[4 ] = 'dd' print (d)print ('' )print ("===添加元素===" )d['e' ] = 5 d[6 ] = 'f' print (d)print ('' )print ("===删除元素===" )d = {'a' :1 , 2 :'b' , 'c' :3 , 4 :'d' } del (d['a' ])del (d[2 ])print (d)print ('' )print ("===判断key是否存在===" )d = {'a' :1 , 2 :'b' , 'c' :3 , 4 :'d' } if 'a' in d: print ('a in d' ) if 2 in d: print ('2 in d' ) if not ('x' in d): print ('x not in d' ) print ('' )print ("===判断字典是否为空===" )d = {} if not d: print ('d is empty' ) print ('' )print ("===遍历===" )d = {'a' :1 , 2 :'b' , 'c' :3 , 4 :'d' } for k in d.keys(): print (str (k) + ': ' + str (d[k])) for k, v in d.items(): print (str (k) + ': ' + str (v))
===初始化===
{'a': 1, 2: 'b', 'c': 3, 4: 'd'}
===获取长度===
4
===根据key读写===
{'a': 100, 2: 'b', 'c': 3, 4: 'dd'}
===添加元素===
{'a': 100, 2: 'b', 'c': 3, 4: 'dd', 'e': 5, 6: 'f'}
===删除元素===
{'c': 3, 4: 'd'}
===判断key是否存在===
a in d
2 in d
x not in d
===判断字典是否为空===
d is empty
===遍历===
a: 1
2: b
c: 3
4: d
a: 1
2: b
c: 3
4: d
集合 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 print ("===初始化===" )s_a = set ([1 , 2 , 3 , 4 , 5 ]) s_b = set ([1 , 1 , 2 , 2 , 3 , 4 , 5 ]) print (s_a)print (s_b)print ('' )print ("===获取长度===" )print (len (s_a))print (len (s_b))print ('' )print ("===添加元素===" )s_a.add(6 ) s_a.add(6 ) s_a.update([5 , 6 , 7 , 8 , 9 ]) print (s_a)print ('' )print ("===删除元素===" )s_a.remove(8 ) s_a.remove(9 ) print (s_a)print ('' )print ("===判断元素是否存在===" )print (1 in s_a)print (10 in s_a)print ('' )print ("===判断集合是否为空===" )s_a = set ([]) if not s_a: print ('set is empty' ) else : print ('set is not empty' ) print ('' )print ("===遍历===" )s_a = set ([1 , 2 , 3 , 4 , 5 ]) for i in s_a: print (i) print ('' )print ("===集合操作===" )s_a = set ([1 , 2 , 3 , 4 , 5 ]) s_b = set ([4 , 5 , 6 , 7 , 8 ]) print ("===并集===" )print (s_a | s_b)print (s_a.union(s_b))print ("" )print ("===交集===" )print (s_a & s_b)print (s_a.intersection(s_b))print ("" )print ("===差集 s_a - (s_a and s_b)===" )print (s_a - s_b)print (s_a.difference(s_b))print ("" )print ("===对称差===" )print (s_a ^ s_b)print ((s_a | s_b) - (s_a & s_b))print (s_a.symmetric_difference(s_b))
===初始化===
{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5}
===获取长度===
5
5
===添加元素===
{1, 2, 3, 4, 5, 6, 7, 8, 9}
===删除元素===
{1, 2, 3, 4, 5, 6, 7}
===判断元素是否存在===
True
False
===判断集合是否为空===
set is empty
===遍历===
1
2
3
4
5
===集合操作===
===并集===
{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8}
===交集===
{4, 5}
{4, 5}
===差集 s_a - (s_a and s_b)===
{1, 2, 3}
{1, 2, 3}
===对称差===
{1, 2, 3, 6, 7, 8}
{1, 2, 3, 6, 7, 8}
{1, 2, 3, 6, 7, 8}
列表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 print ("===初始化列表===" )li = [1 , 2 , 3 , 'abc' , 4.5 , [2 , 3 , 4 ], {1 :'one' }] print ("===获取长度===" )print (len (li))print ('' )print ("===根据索引读写===" )print (li[0 ])print (li[3 ])print (li[-1 ])print ('' )print ("===添加元素===" )li = [1 , 2 , 3 ] li.append('a' ) li.append('b' ) print (li)li.append([4 , 5 , 6 ]) print (li)li = [1 , 2 , 3 ] li.extend([4 , 5 , 6 ]) print (li)print ('' )print ("===删除元素===" )li = [1 , 2 , 3 , 4 , 5 ] li.pop() print (li)del (li[0 ])del (li[1 ])print (li)print ('' )print ("===元素是否存在===" )li = [1 , 2 , 3 , 4 , 5 ] print (1 in li)print (6 in li)print ('' )print ("===列表是否为空===" )li = [] if not li: print ('Empty' ) else : print ('Not empty' ) print ('' )print ("===字符串===" )s = 'abcdefg' li = list (s) li[4 ] = 'E' li[5 ] = 'F' print (li)s = '' .join(li) print (s)print ('' )print ("===遍历===" )li = [1 , 2 , 3 ] for i in li: print (i) for i in range (len (li)): print (li[i])
===初始化列表===
===获取长度===
7
===根据索引读写===
1
abc
{1: 'one'}
===添加元素===
[1, 2, 3, 'a', 'b']
[1, 2, 3, 'a', 'b', [4, 5, 6]]
[1, 2, 3, 4, 5, 6]
===删除元素===
[1, 2, 3, 4]
[2, 4]
===元素是否存在===
True
False
===列表是否为空===
Empty
===字符串===
['a', 'b', 'c', 'd', 'E', 'F', 'g']
abcdEFg
===遍历===
1
2
3
1
2
3
切片 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 li = [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] print ("===切片===" )print (li[2 :5 ])print (li[:4 ])print (li[5 :])print (li[:])print (li[0 :6 :2 ])print (li[3 ::2 ])print ('' )print ("===负数索引和step===" )print (li[::-1 ])print (li[::-2 ])print (li[-6 :-1 :1 ])print (li[-1 ::-1 ])
===切片===
[2, 3, 4]
[0, 1, 2, 3]
[5, 6, 7, 8, 9, 10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 2, 4]
[3, 5, 7, 9]
===负数索引和step===
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
[10, 8, 6, 4, 2, 0]
[5, 6, 7, 8, 9]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
json处理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 import jsonprint ("===dict与json互转===" )d = {'Python' :100 , 'C++' :70 , 'Basic' :60 , 'others' :{'C' :65 , 'Java' :50 }} jtxt = json.dumps(d) dd = json.loads(jtxt) print (jtxt)print (dd)print ('' )print ("===用json序列化非dict对象===" )class Student : def __init__ (self, name, age, score ): self.name = name self.age = age self.score = score def __str__ (self ): return '%s: %d, %d' % (self.name, self.age, self.score) s = Student('Tom' , 15 , 85 ) print (s)print (s.__dict__)print ("" )print ("===方法1===" )jtxt = json.dumps(s, default = lambda obj: obj.__dict__) print (jtxt)def d2s (d ): return Student(d['name' ], d['age' ], d['score' ]) print (json.loads(jtxt, object_hook = d2s))print ("" )print ("===方法2===" )def s2d (s ): return s.__dict__ jtxt = json.dumps(s, default = s2d) print (jtxt)
===dict与json互转===
{"Python": 100, "C++": 70, "Basic": 60, "others": {"C": 65, "Java": 50}}
{'Python': 100, 'C++': 70, 'Basic': 60, 'others': {'C': 65, 'Java': 50}}
===用json序列化非dict对象===
Tom: 15, 85
{'name': 'Tom', 'age': 15, 'score': 85}
===方法1===
{"name": "Tom", "age": 15, "score": 85}
Tom: 15, 85
===方法2===
{"name": "Tom", "age": 15, "score": 85}
class 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class MyClass : def __init__ (self, val ): self.val = val def display (self, s ): print ('%s: %d' % (s, self.val)) m = MyClass(100 ) print (m.val)m.display('hello' ) print ('' )m2 = m print (id (m))print (id (m2))fn = m.display fn('hey' )
100
hello: 100
4539482520
4539482520
hey: 100
generator 1 2 3 4 5 6 7 8 9 10 11 def fab (max ): n, a, b = 0 , 0 , 1 while n < max : yield b a, b = b, a + b n = n + 1 return n for n in fab(5 ): print (n)
1
1
2
3
5
参考:
廖雪峰Python数据分析
yield讲解