python容器

1.列表

定义:是一种有序的集合,可以随时添加和删除其中的元素。

访问方式:用索引来访问,索引是从0开始。当索引超出范围时,会报IndexErr错误。所以,要确保索引不要越界,记得最后一个元素的索引是len(classname)-1.如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,list[1]直接获取最后一个元素。

元素添加:在尾部添加 list.append

                  在指定位置添加:list.insert(1,要添加的数据)

元素删除:删除尾部元素:list.pop()

                  删除指定位置元素:list.pop(1)

替换元素:直接赋值给对应的索引位置:list[1] ='替换值'

list内再包含list:如:list[1,2,3,[1,2,3],4]

list常用函数:

# append() 追加数据

# insert() 插入数据

# pop()    移出数据

# clear()  删除列表所有元素

# copy()   拷贝列表

# count()  获取某元素出现的次数

# extend   扩展列表,把

# index()  获取某个元素的索引

# remove() 移除列表中某个元素

# reverse()反向排序

# sort()   排序(升序、降序)

(1)初始化列表

li = [1, 2, 3, 'abc', 4.5, [2, 3, 4], {1:'one'}]

(2)获取列表长度

print(len(li))

(3)根据索引读写

print(li[0])

print(li[3])

print(li[-1])

(4)添加元素

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)

(5)删除元素

li = [1, 2, 3, 4, 5]

li.pop()

print(li)

del(li[0])

del(li[1])

print(li)

(6)判断元素是否在列表

li = [1, 2, 3, 4, 5]

print(1 in li)

print(6 in li)

(7)判断列表是否为空

li = []

if not li:

print('Empty')

else:

print('Not empty')

(8)替换元素

s ='abcdefg'

li =list(s)

li[4] ='E'

li[5] ='F'

print(li)

s =''.join(li)

print(s)

(9)遍历

li = [1, 2, 3]

for iin li:

print(i)

for iin range(len(li)):

print(li[i])

(10)列表的切片

print(li[2:5])

print(li[:4])

print(li[5:])

print(li[:])

print(li[0:6:2])

print(li[3::2])

print('')

# 负数索引和step

print(li[::-1])

print(li[::-2])

print(li[-6:-1:1])

print(li[-1::-1])

运行结果


2.元组

定义:是一种有序的集合。但是tuple一旦初始化就不能修改,tuple没有append(),insert()这样的方法。‘’

访问方法:tuple[0],tuple[-1]

替换元素:不能复制成另外的元素

统计次数:统计元组中某个元素出现的次数

result = tuple1.count(2)

print(result)

index() 获取某个元素在元组中的第一个位置索引,若有返回索引值,若没有抛出异常

result = tuple1.index(1)

3.集合(set)

定义:集合中可以存储任意类型的数据,集合中不会出现重复的数据。

添加元素:set1.add(要添加的数据)

                   set1.update()

删除元素:set1.remove(要删除的数据)

集合中移出一个元素:set1.pop()

列表转换为集合:list1 = [1,2,2,2,3,4,5]

                              t =set(list1)

集合转换为列表:list2 = list(t)

列表转换为元组:tuple1 = tuple(list2)

元组转换为列表:list3 = list(tuple1)

(1)元组初始化

s_a =set([1, 2, 3, 4, 5])

s_b =set([1, 1, 2, 2, 3, 4, 5])

print(s_a)

print(s_b)

(2)获取长度

print(len(s_a))

print(len(s_b))

(3)添加元素

s_a.add(6)

s_a.add(6)

s_a.update([5, 6, 7, 8, 9])

print(s_a)

(4)删除元素

s_a.remove(8)

s_a.remove(9)

print(s_a)

(5)判断元素是否存在

print(1 in s_a)

print(10 in s_a)

(6)判断集合是否为空

s_a =set([])

if not s_a:

print('set is empty')

else:

print('set is not empty')

(7)遍历

s_a =set([1, 2, 3, 4, 5])

for iin s_a:

print(i)

4.字典(dct)

定义:是一种可变容器模型,且可存储任意类型对象。

初始化:字典的每个键值key=>value对用冒号 :分割,每个键值对之间用逗号,分割,整个字典包括在花括号{}中,格式如下

d = {key1 : value1, key2 : value2 }

优点:字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

注:a.不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住

b.键必须不可变,所以可以用数字,字符串或元组充当,列表不行。

删除所有元素

dict.clear()

复制字典

dict.copy()

创建字典

dict.fromkeys(seq[,val]) 以序列seq中元素做字典的键,val为字典所有键对应的初始值。

返回字典指定值

dict.get(key,default=None)

返回指定键的值,如果值不在字典中返回default值(根据key取出值,若key不存在,返回默认值)

判断键是否在字典中

dict.has_key(key)

如果键在字典dict里返回true,否则返回

返回所有键和值

dict.items()

以列表返回可遍历的(键,值)元组数组  即获取字典中所有的key,value,返回[(key,value)]

返回字典的键

dict.keys()

以列表返回一个字典所有的键(获取字典所有的key)

获取键值并自动添加键值

dict.setdefault(key,default=None)

和get()相似,但如果键不存在于字典中,将会添加键并将值设为default

更新字典

dict.update(dict2)

把字典dict2的键/值对更新到dict里

查询字典中所有的值

dict.values()

以列表返回字典中的所有值(获取字典所有的value)

删除字典给定key所对应的的值

pop(key[,default])

删除字典给定键key所对应的的值,返回值为被删除的值。key值必须给出。否则,返回default值。根据key移出值。

随机返回并删除字典中的一对键和值。

popitem()

随机返回并删除字典中的一对键和值。 移出字典中某个key和值,返回(key,value)

(1)初始化

d = {'a':1, 2:'b', 'c':3, 4:'d'}

print(d)

(2)获取长度

print(len(d))

(3)根据key读写

d['a'] =100

d[4] ='dd'

print(d)

(4)添加元素

d['e'] =5

d[6] ='f'

print(d)

(5)删除元素

d = {'a':1, 2:'b', 'c':3, 4:'d'}

del(d['a'])

del(d[2])

print(d)

(6)判断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')

(7)判断字典是否为空

d = {}

if not d:

print('d is empty')

(8)遍历

d = {'a':1, 2:'b', 'c':3, 4:'d'}

for kin d.keys():

print(str(k) +': ' +str(d[k]))

for k, vin d.items():

print(str(k) +': ' +str(v))

注:dict内部存放的顺序和key放入的顺序是没有关系的。和list比较,dict有以下几个特点:

1.查找和插入的速度极快,不会随着key的增加而变慢;

2.需要占用大量的内存,内存浪费多。

而list:

1.查找和插入的时间随着元素的增加而增加;

2.占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。

注:set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素“。””

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容