#!/usr/bin/env python
# encoding: utf-8
import time
start = time.clock()
t = (10,11,12,13,14)
print(t)
#可以索引可以切片:但是元组是不可变的:
print(t[0])
print(t[1:3])
end = time.clock()
res = time.localtime(end - start)
print(res)
#字典 :空字典——Python使用{}或者dict()来创建一个空的字典:
a = {}
print(type(a))
a = dict()
print(type(a))
#有了dict(字典)之后,可以用索引键值的方法向其中添加元素,也可以通过索引来查看元素
#的值
a["one"] = "this is number 1"
a["tow"] = "this is number 2"
#更新键值:
a["one"] = "this is number 1,too"
print(a["one"])
print(a)
#初始化字典:
#可以看到,Python使用key:value 这样的结构来表示字典中的元素结构,事实上,可以直接使
#用这样的结构来初始化一个字典:
b = {'one':'this is the number 1','two':'this is number 2'}
print(b['one'])
#python 中的字典,Python并不一定按照顺序插入键值,因为键本身不一定是有序的。
print(a)
print(b)
#键必须是不可改变的类型
#由于hash的目的,Python中要求这些键值对的键必须是不可变的,而值可以是任意的
#Python对象。
#一个表示近义词的字典:
synonyms = {}
synonyms['mutable'] = ['change','shidong','dong','hello world']
synonyms['second_exam'] = ['fixed','set','rigid','inflexible']
synonyms['third'] = {'one':1,'two':2,'three':3}
print(synonyms)
print(synonyms['third'])
#字典可以作为值传入新的字典
e1 = {'mag':0.3,'width':10}
e2 = {'mag':0.4,'width':20}
e3 = {'mag':10,'width':100}
events = {500:e1,200:e2,'hello':e3}
print(events)
#使用dict初始化字典:除了通常的定义方式,还可以通过dict()转化来生成字典:
inventory = dict(
[('foo',123),
('from',456)
]
)
print(inventory)
#利用索引直接更新键值对:
inventory['from'] =10000
print(inventory)
connections = {}
connections[('New York', 'Seattle')] = 100
connections[('Austin', 'New York')] = 200
connections[('New York', 'Austin')] = 400
print(connections)
#字典方法:get方法
a = dict(
[('one',1),
('two',2)
]
)
print(a)
print(a.get('one'))
#也可以指定默认值参数:
print(a.get('three','没有这个值'))
#pop方法删除元素
#pop方法可以用来弹出字典中某个键对应的值,同时也可以指定默认参数:
#d.pop(key,default = None)
print(a.pop('two','空值'))
#与列表一样,del函数可以用来删除字典中特定的键值对,例如:
del a['one']
print(a)
a['shidong']= 'dong'
print(a)
#update方法更新字典
#之前已经知道,可以通过索引插入、修改单个键值对,但是如果相对多个键值进行
#操作,这种方法就显得比较麻烦,需要用到update方法:d.update(news)
person = {}
person['first'] = "Jmes"
person['last'] = "Maxwell"
person['born'] = 1831
print(person)
newd = {'first':'James','middle':'Clerk'}
person.update(newd)
print(person)
#使用in查看字典中是否存在特定的键:
barn = {'cows':1,'dogs':5,'cats':3}
print('chickens' in barn)
print('cows' in barn)
#keys方法,values方法和items方法#`d.keys()`#返回一个由所有键组成的列表:print(barn.keys())#d.values()#返回一个由所有值组成的列表:print(barn.values())#d.items()#返回一个由所有键值对元组组成的列表:print(barn.items())
#!/usr/bin/env python
# encoding: utf-8
#set 集合是一种无序序列,当集合中存在两个同样的元素的时候,Python只会保存
#其中的一个(唯一性),同时为了确保其中不包含同样的元素,集合中放入的元素
#只能是不可变的对象(确定性)。
#集合生成 :可以用set()函数来显示的生成空集合:
a = set()
print(type(a))
#集合会去除重复元素。
a = set([2,3,2,4,5,9])
print(a)
#集合也可以用{}来创建
a = {1,2,3,4,5,5}
print(type(a))
print(a)
#集合操作
a = {1,2,3,4}
b = {3,4,5,6}
#并:两个集合的并,返回包含两个集合所有元素的集合(去除重复)。
#可以用方法a.union(b)或者操作a|b实现。
print(a.union(b))
print(a|b)
#交:两个集合的交,返回包含两个集合共有元素的集合。
#可以使用方法a.intersection(b)或者a&b
print(a.intersection(b))
print(a&b)
#差:a和b的差集,返回只在a不在b的元素组成的集合。
#可以用方法a.difference(b) 或者a-b实现。
print(a.difference(b))
print(a-b)
print(b.difference(a))
print(b - a)
#对称差:a和b的对称差集,返回在a或在b中,但是不同时在a和b中的元素组成的集合
#可以用方法a.symmetric_difference(b),或者操作a^b实现(异或操作符)。
print(a.symmetric_difference(b))
print(a^b)
#包含关系:
a = {1,2,3}
b = {1,2}
#要判断b是不是a的子集,可以用b.issubset(a)方法,或者更简单的用操作 b <=a:
#反之亦然
print(b.issubset(a))
print(b<=a)
#集合方法
#add方法集合添加单个元素。如果集合添加的是已有元素,那么集合不变:
t = {1,2,3}
t.add(5)
print(t)
#update方法向集合添加多个元素
#跟列表的extend方法类似,用来向集合添加多个元素。
t.update({5,6,7})
print(t)
#remove方法移除单个元素
t.remove(6)
print(t)
#pop方法弹出元素:由于集合没有顺序,不能想列表一样按照位置弹出元素,所以pop方法删除
#并返回集合中任意一个元素,如果集合中没有元素则会报错。
t.pop()
print(t)
print(t.pop())
print(t)
#discard方法
#作用与remove一样,但是当元素在集合中不存在的时候不会报错。
t.discard(20)
print(t)
#difference_update 方法:从a中去除所有属于b的元素:
#a.difference_update(b)
a = {1,2,3,4}
b = {3,4,5,6}
print(a.difference(b))
a.difference_update(b)
print(a)
#不可变集合:使用frozenset来进行创建,与集合不同的是一旦不可变集合一旦创建就不可改变
#不可变集合的一个主要应用是作为字典的键,例如用一个字典来记录两个城市之间的距离。
s = frozenset([1,2,3,4,'a',1])
print(s)