Skip to content

Commit 461f691

Browse files
committed
添加tuple dict set 数据。xuming 20170313
1 parent b7e346f commit 461f691

7 files changed

Lines changed: 263 additions & 0 deletions

File tree

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,7 @@ ENV/
8787

8888
# Rope project settings
8989
.ropeproject
90+
91+
.idea
92+
93+
.idea/*
File renamed without changes.

base/03.list_vs_string.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@description:
4+
@author:XuMing
5+
"""
6+
from __future__ import print_function
7+
from __future__ import unicode_literals
8+
9+
# 列表是可变的(Mutable)
10+
a = [1, 2, 3, 4]
11+
a[0] = 100
12+
a.insert(3, 200)
13+
print(a) # [100, 2, 3, 200, 4]
14+
15+
# 字符串是不可变的(Immutable)
16+
s = "hello world"
17+
# 通过索引改变会报错
18+
19+
# 字符串方法只是返回一个新字符串,并不改变原来的值:
20+
print(s.replace('world', 'Mars')) # hello Mars
21+
print(s) # hello world
22+
23+
# 如果想改变字符串的值,可以用重新赋值的方法:
24+
s = s.replace('world', 'YunYun')
25+
print(s) # hello YunYun
26+
27+
# 可变数据类型: list, dictionary, set, numpy array, user defined objects
28+
# 不可变数据类型: integer, float, long, complex, string, tuple, frozenset

base/04.tuple.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@description:
4+
@author:XuMing
5+
"""
6+
from __future__ import print_function
7+
from __future__ import unicode_literals
8+
9+
# 与列表相似,元组Tuple也是个有序序列,但是元组是不可变的,用()生成。
10+
a = (10, 11, 12, 13, 14)
11+
a
12+
print(a)
13+
14+
# 可以索引,切片:
15+
c = a[0]
16+
print(c)
17+
18+
c = a[1:3]
19+
print(c) # (11, 12)
20+
21+
# 单个元素的元组生成
22+
# 采用下列方式定义只有一个元素的元组:
23+
a = (10,)
24+
print(a)
25+
print(type(a)) # <type 'tuple'>
26+
27+
a = [1, 2, 3]
28+
b = tuple(a)
29+
print(b) # (1, 2, 3)
30+
31+
# 由于元组是不可变的,所以只能有一些不可变的方法,
32+
# 例如计算元素个数 count 和元素位置 index ,用法与列表一样。
33+
c = a.count(1)
34+
print(c) # 1
35+
36+
c = a.index(3)
37+
print(c) # 索引位置为:2

base/05.dict.py

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@description:
4+
@author:XuMing
5+
"""
6+
from __future__ import print_function
7+
from __future__ import unicode_literals
8+
import pprint
9+
10+
# 字典 dictionary ,在一些编程语言中也称为 hash , map ,
11+
# 是一种由键值对组成的数据结构。
12+
13+
a = {}
14+
print(type(a)) # <type 'dict'>
15+
a = dict()
16+
print(type(a))
17+
18+
# 插入键值
19+
a['f'] = 'num 1'
20+
a['s'] = 'num 2'
21+
print(a) # {u's': u'num 2', u'f': u'num 1'}
22+
23+
# 查看键值
24+
print(a['s']) # num 2
25+
26+
# 更新
27+
a['f'] = 'num 3'
28+
print(a) # {u's': u'num 2', u'f': u'num 3'}
29+
30+
# 初始化字典
31+
a = {'first': 'num 1', 'second': 'num 2', 3: 'num 3'}
32+
print(a['first']) # num 1
33+
print(a[3]) # num 3
34+
35+
# Python中不能用支持用数字索引按顺序查看字典中的值,
36+
# 而且数字本身也有可能成为键值,这样会引起混淆:
37+
# a[0] 会报错
38+
39+
# 例子
40+
# 定义四个字典
41+
e1 = {'mag': 0.05, 'width': 20}
42+
e2 = {'mag': 0.04, 'width': 25}
43+
e3 = {'mag': 0.05, 'width': 80}
44+
e4 = {'mag': 0.03, 'width': 30}
45+
# 以字典作为值传入新的字典
46+
events = {500: e1, 760: e2, 3001: e3, 4180: e4}
47+
# {760: {u'width': 25, u'mag': 0.04},
48+
# 3001: {u'width': 80, u'mag': 0.05},
49+
# 500: {u'width': 20, u'mag': 0.05},
50+
# 4180: {u'width': 30, u'mag': 0.03}}
51+
print(events)
52+
53+
# 另一个例子
54+
people = [
55+
{'first': 'Sam', 'last': 'Malone', 'name': 35},
56+
{'first': 'Woody', 'last': 'Boyd', 'name': 21},
57+
{'first': 'Norm', 'last': 'Peterson', 'name': 34},
58+
{'first': 'Diane', 'last': 'Chambers', 'name': 33}
59+
]
60+
# [{'first': 'Sam', 'last': 'Malone', 'name': 35},
61+
# {'first': 'Woody', 'last': 'Boyd', 'name': 21},
62+
# {'first': 'Norm', 'last': 'Peterson', 'name': 34},
63+
# {'first': 'Diane', 'last': 'Chambers', 'name': 33}]
64+
print(people)
65+
66+
# 使用 dict 初始化字典
67+
# 除了通常的定义方式,还可以通过 dict() 转化来生成字典:
68+
my_dict = dict([('name', 'lili'),
69+
('sex', 'female'),
70+
('age', 32),
71+
('address', 'beijing')])
72+
# {u'age': 32,
73+
# u'address': u'beijing',
74+
# u'name': u'lili',
75+
# u'sex': u'female'}
76+
print(my_dict)
77+
78+
# 利用索引直接更新键值对:
79+
my_dict['age'] += 1
80+
print(my_dict) # u'age': 33
81+
82+
# 可以使用元组作为键值,
83+
# 例如,可以用元组做键来表示从第一个城市飞往第二个城市航班数的多少:
84+
connections = {}
85+
connections[('New York', 'Seattle')] = 100
86+
connections[('Austin', 'New York')] = 200
87+
connections[('New York', 'Austin')] = 400
88+
89+
# 元组是有序的,
90+
# 因此 ('New York', 'Austin') 和 ('Austin', 'New York') 是两个不同的键:
91+
print(connections[('Austin', 'New York')]) # 200
92+
print(connections[('New York', 'Austin')]) # 400
93+
94+
# 字典方法
95+
# get 方法 : d.get(key, default = None)
96+
# 之前已经见过,用索引可以找到一个键对应的值,
97+
# 但是当字典中没有这个键的时候,Python会报错
98+
a = {'first': 'num 1', 'second': 'num 2'}
99+
# error:
100+
# print(a['third'])
101+
# get 返回字典中键 key 对应的值,
102+
# 如果没有这个键,返回 default 指定的值(默认是 None )。
103+
print(a.get('third')) # None
104+
105+
# 指定默认值参数:
106+
b = a.get("three", "num 0")
107+
print(b) # num 0
108+
109+
# pop 方法删除元素
110+
# pop 方法可以用来弹出字典中某个键对应的值,同时也可以指定默认参数:
111+
# d.pop(key, default = None)
112+
a = {'first': 'num 1', 'second': 'num 2'}
113+
c = a.pop('first')
114+
print(c) # num 1
115+
print(a) # {u'second': u'num 2'}
116+
117+
# 弹出不存在的键值:
118+
d = a.pop("third", 'not exist')
119+
print(d) # not exist
120+
121+
# 与列表一样,del 函数可以用来删除字典中特定的键值对,例如:
122+
a = {'first': 'num 1', 'second': 'num 2'}
123+
del a["first"]
124+
print(a) # {u'second': u'num 2'}
125+
126+
# update方法更新字典
127+
# 之前已经知道,可以通过索引来插入、修改单个键值对,
128+
# 但是如果想对多个键值对进行操作,这种方法就显得比较麻烦,好在有 update 方法:
129+
my_dict = dict([('name', 'lili'),
130+
('sex', 'female'),
131+
('age', 32),
132+
('address', 'beijing')])
133+
# 把 ‘lili' 改成 'lucy',同时插入 'single' 到 'marriage'
134+
dict_update = {'name': 'lucy', 'marriage': 'single'}
135+
my_dict.update(dict_update)
136+
print(my_dict)
137+
# {u'marriage': u'single',
138+
# u'name': u'lucy',
139+
# u'address': u'beijing',
140+
# u'age': 32,
141+
# u'sex': u'female'}
142+
pprint.pprint(my_dict) # 华丽丽的显示方式
143+
144+
# in查询字典中是否有该键
145+
barn = {'cows': 1, 'dogs': 5, 'cats': 3}
146+
# in 可以用来判断字典中是否有某个特定的键:
147+
print('chickens' in barn) # False
148+
print('cows' in barn) # True
149+
150+
# keys 方法,values 方法和items 方法
151+
# `d.keys()`
152+
153+
# 返回一个由所有键组成的列表;
154+
# `d.values()`
155+
156+
# 返回一个由所有值组成的列表;
157+
# `d.items()`
158+
159+
# 返回一个由所有键值对元组组成的列表;
160+
print(barn.keys()) # [u'cows', u'cats', u'dogs']
161+
print(barn.values()) # [1, 3, 5]
162+
print(barn.items()) # [(u'cows', 1), (u'cats', 3), (u'dogs', 5)]
163+
for key, val in barn.items():
164+
print(key, val)
165+
# cows 1
166+
# cats 3
167+
# dogs 5

base/06.set.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@description:
4+
@author:XuMing
5+
"""
6+
from __future__ import print_function
7+
from __future__ import unicode_literals
8+
9+
# 列表和字符串都是一种有序序列,而集合 set 是一种无序的序列。
10+
# 因为集合是无序的,所以当集合中存在两个同样的元素的时候,只会保存其中的一个(唯一性);
11+
# 同时为了确保其中不包含同样的元素,集合中放入的元素只能是不可变的对象(确定性)。
12+
13+
# 可以用set()函数来显示的生成空集合:
14+
a = set()
15+
print(type(a))
16+
17+
# 使用一个列表来初始化一个集合:
18+
a = set([1, 2, 3, 1])
19+
print(a) # 集合会自动去除重复元素 1。
20+
21+
# 集合中的元素是用大括号{}包含起来的,这意味着可以用{}的形式来创建集合:
22+
a = {1, 2, 3, 1}
23+
print(a) # {1, 2, 3}
24+
25+
# 但是创建空集合的时候只能用set来创建,因为在Python中{}创建的是一个空的字典:
26+
s = {}
27+
print(type(s)) # <type 'dict'>

0 commit comments

Comments
 (0)