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内部“不会有重复元素“。””