python入门list和tuple,dict和set
1.list:一种有序的集合,可以随时添加和删除其中的元素
用 [ ] 把list所有元素括起来,就是list对象。
list中包含的元素可以不是同一种类型,也可以一个元素都没有。
例:
classmates = ['Michael', 'Bob', 'Tracy']
L = ['Michael', 100, True]
empty_list = []
1.1访问list:通过索引获取list中的指定元素
注意:索引从0开始,即第一个元素的索引是0.且索引不要越界,越界会报错。
例:
L = ['Adam', 'Lisa', 'Bart']
print L[0]
Adam
print L[1]
Lisa
print L[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
1.2倒序访问list
例:
L = ['Adam', 'Lisa', 'Bart']
print L[-2]
Lisa
print L[-3]
Adam
print L[-4]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
1.3添加新元素
方法一:用list的apped()方法,将最新元素添加至末尾。
例:
L = ['Adam', 'Lisa', 'Bart']
L.append('Paul')
print L
['Adam', 'Lisa', 'Bart', 'Paul']
方法二:用list的insert(索引号,新元素)方法,指定添加到位置上。
例:
L = ['Adam', 'Lisa', 'Bart']
L.insert(0, 'Paul')
print L
['Paul', 'Adam', 'Lisa', 'Bart']
1.4删除元素
用list的pop()方法,总是删除最后一个元素,且返回该元素。也可通过pop(索引号)来指定删除
例:
L = ['Adam', 'Lisa', 'Bart', 'Paul']
L.pop()
'Paul'
L = ['Adam', 'Lisa', 'Paul', 'Bart']
L.pop(2)
'Paul'
1.5替换元素
对list中的某个索引赋值,可直接替换原来的元素
例:
L = ['Adam', 'Lisa', 'Bart']
L[2] = 'Paul'
print L
L = ['Adam', 'Lisa', 'Paul']
2.tuple:一种有序列表,一旦创建,就不能修改。
例:
t = ('Adam', 'Lisa', 'Bart')
获取tuple元素的方式和list一样。
2.1创建单元素tuple
例:
t = (1,) #防止和t=(1)混淆
print t
(1,)
t = () #空tuple
print t
()
2.2’可变的‘tuple
例:
t = ('a', 'b', ['A', 'B'])
L = t[2]#获取tuple的第三个元素
L[0] = 'X' #修改list的元素
L[1] = 'Y'
print t
('a', 'b', ['X', 'Y'])
总结:tuple中的’不变‘是说,tuple的每个元素指向永远不变,如指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的。
3.dict:以key:value的格式存储,dict也是集合
例:
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
len(d) #使用len()函数计算集合的大小
3
3.1访问dict
方法一:dict可以使用key来查找对应的value
例:
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
print d['Adam']
95
print d['Paul'] #注意:key不存在时,会报错
Traceback (most recent call last):
File "index.py", line 11, in <module>
print d['Paul']
KeyError: 'Paul'
为了避免key不存在时报错,则使用if判断如下:
if 'Paul' in d:
print d['Paul']
方法二:使用dict的get方法,当key不存在时,返回none
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
print d.get('Bart')
59
print d.get('Paul')
None
3.2dict的特点:
1.查找速度快,与dict中的元素无关,无论多少,查找速度都一样。
2.占用内存大,会浪费很多内容
3.dict是按照key查找的,在一个dict中,key不能重复
4.存储的key-value序对是无序的
5.作为key的元素必须是不可变的,value无所谓
例:
{
'123': [1, 2, 3], # key 是 str,value是list
123: '123', # key 是 int,value 是 str
('a', 'b'): True # key 是 tuple,并且tuple的每个元素都是不可变对象,value是 boolean
}
3.3更新dict
直接使用key赋值语句,key已经存在,则会替换原来的value
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
d['Paul'] = 72
print d
{'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 59}
d['Bart'] = 60 #key已经存在
print d
{'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 60}
3.4遍历dict
直接使用for循环遍历dict的key
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
for key in d:
print key,':',d[key]
4.set:持有一系列没有重复且无序的元素。
创建set的方式:调用set()并传入一个list
例:
s = set(['A', 'B', 'C'])
print s
set(['A', 'C', 'B'])
当传入包含重复元素的list会自动去掉重复的元素
例:
s = set(['A', 'B', 'C', 'C'])
print s
set(['A', 'C', 'B'])
len(s)
3
4.1访问set:由于set存储的是无序集合,则通过判断一个元素是否在set中来访问set的某个元素
注意:元素的大小写
s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
'Bart' in s
True
'Bill' in s
False
'bart' in s #注意大小写
False
4.2set的特点:
1.set的内部结构和dict很像,只是不存储value。判断一个元素是否在set中,速度很快。
2.set中的元素必须是不变的对象
3.set中的元素是无序的
例:
weekdays = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])
x = '???' # 用户输入的字符串
if x in weekdays:
print 'input ok'
else:
print 'input error'
4.3遍历set
通过for循环遍历
例
s = set(['Adam', 'Lisa', 'Bart'])
for name in s:
print name
Lisa
Adam
Bart #元素顺序是不同的
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
for name,score in s:
print name,':',score
4.4更新set:一是把新的元素添加到set中,二是把已有元素从set中删除
添加元素,用set的add()方法
例:
s = set([1, 2, 3])
s.add(4)
print s
set([1, 2, 3, 4])
s = set([1, 2, 3])
s.add(3) #如果添加元素已存在,add()不会报错,但是不会加入进去
print s
set([1, 2, 3])
删除set中的元素,通过set的remove()方法
s = set([1, 2, 3, 4])
s.remove(4)
print s
set([1, 2, 3])
s = set([1, 2, 3])
s.remove(4) #删除不存在则会报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 4
总结:用add()可以直接添加,用remove()前需要判断
译者介绍:家华,从事mysqlDBA的工作,记录自己的一些总结