一、列表
列表属于可变数据类型,可以增加元素,可以通过赋值的方式改变元素的值,且内存地址不变
列表中可保存的数据类型:可以保存任何数据类型--数据项不需要具有相同的类型
1、列表的创建:[]
2、访问数据项:索引和分片
3、更新数据项
索引赋值:list[idx] = value,注意: 不能超过索引范围
追加元素:单个元素追加 list.append(ele),追加一个列表中的所有元素 += (extend),不太常用的方式:list[x:x] = list2,固定写法,第x项后插入一个列表的所有元素
分片赋值
批量删除 和 清空列表
list[x:y] = []
list[:] = []
删除数据项
del(list[index])
del(list[x:y])
del(list) 不加索引直接删除引用,回收对象
4、列表方法
list.count() 有返回值
list.append() 原地操作,改变了对象本身
list.append(obj) 用于在列表末尾追加新的元素或对象 直接操作对象,无返回值
list.insert(index, obj) 将元素或对象插入到列表指定项
list.extend 在列表末尾一次性追加另一个序列中的多个值,相当于+=
list.count 用于统计某个元素在列表中出现的次数
list.index 用于从列表中找出某个值第一个匹配项的索引位置
list.pop 该方法从列表中弹出一个元素,默认是最后一个。并且返回弹出的元素;参数为下标,指定要弹出的元素
list.remove 从列表中移除某个值的第一个匹配项。与pop不同的是,该方法并不返回移除的元素, 并且参数
为要移除的元素
list.reverse 该方法对列表反向存放。注意该方法改变了列表但是没有返回值
reversed函数:并不返回一个列表,而是返回一个迭代器对象,使用list把迭代器对象转换成列表
list.sort 用于在原位置对列表进行排序。 在原位置意味着列表会被修改
注意:sort()方法的返回值并不是序列本身,而是None
5、修改排序规则
reverse参数:reverse 默认为False--按照ASCII码的升序排列,reverse=True降序
key参数
key = 函数名
key = len
key = mysort
函数为接收单参数的函数,能逐个接收 list 中的每个元素,经过运算后返回一个值
该值就作为排序的依据
key = lambda x: xxx
保存原序列顺序而进行排序
1.拷贝后再排序
2.内建函数:sorted()
sorted(seq, reverse=True/False, key=fun)
第一个参数是一个序列(或无序的队列如字典)
key指定一个接收单参数的函数,这个函数接收序列中的每个元素,经过运算后返回一个值
该值就作为排序的依据。默认为None
reverse是一个布尔值。如果设置为True,列表元素将被倒序排列
返回值是一个对序列中元素进行排序后的列表(list)
迭代整个列表:
for x in list:
print(x)
for x in range(len(list)):
print(x)
6、运算
a = a + b 生成了一个新的列表存这两个列表的和
a += b 效果与extend()一样,向原列表追加一些新元素,在原有列表上增加
* [1,2,3] * 3
多维列表: [ [1, 2, 3], [4, 5, 6] ]
zip函数
它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的zip对象。
若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同
类型转换
其他对象转列表
list(str)
str.split(seperator)
eval(str)
列表转字符串
str(list)
''.join(list)
列表转元组
tuple(list)
7、Set介绍:集合
集合类型–无序不重复元素集
创建
set(序列对象) 或 {A,B,C} (Python3)
不支持索引和分片
可以循环
操作
添加一项 s.add('x')
删除一项 s.remove('H')
remove()用于删除一个set中的元素,这个值在set中必须存在,如果不存在的话,会引发KeyError错误。
discard()用于删除一个set中的元素,这个值不必一定存在,不存在的情况下删除也不会触发错误。
弹出首个 s.pop()
清空 s.clear() 清空后为空set
因为也被当做序列对象,所以可以转元组或者转列表
二、元组
1、定义元组
方式一:a = (1,2,3)
方式二:a = 1,2,3
特殊:a = 1,a = (1,)
2、访问元组对象
通过索引、分片方式:a = (1,6,4,8,3,5,6)
(1)索引:print(a[0])/print(a[-1])
(2)分片:print(a[2:6:1])/print(a[::-1])
注意:元组中的元素值不允许修改!eg:a = (1,6,4,8,3,5,6) a[0] = 2 错误!!!
元组属于不可变数据类型,要想改变某个值只能重新赋值,重新开辟内存空间创建新对象
(列表可以通过元素赋值修改某个元素,内存地址不变)
3、删除元组
del(元组名):删除整个元组
4、元组运算符
+ 连接: tup3 = tup1 + tup2;
*N 复制并连接: 重复N次 tup3 = tup1 * 3
5、内置函数作用于元组
len(tuple):计算元组元素个数。
max(tuple):返回元组中元素最大值。
min(tuple):返回元组中元素最小值。
6、将其他序列转为元组:
tuple(seq):将其他类型序列转换为元组。
7、元组操作
index : T.index(target)
获取元素在元组中的索引值,对于重复的元素,默认获取从左起第一个元素的索引值
找不到时报ValueError
count : T.count(target)返回元组中某元素的个数
注意:元组中的数据类型:任意,不必一致
三、字典
字典是可变类型,字典中的数据是无序的
一个字典条目的语法是 键:值 key value,任何不可变数据类型都可以作为条目的键
1、创建
{ } 、dict(key1=value1,key2=value2...)
键
必须独一无二(如果键重复存入,会被覆盖),值不必
只能是不可变类型(常用字符串和数字)
值
可以是任意数据类型
dic1 = {'name':'zhangsan', 'age': 18, 'address': 'beijing', 'xxx': 'hahaha'}
{'zhangsan':80, 'lisi':90}
2、访问数据项
通过key:dic[key],如果key不存在,报KeyError
***没有索引!不能分片!
取值:
print(dic1['age'])
print(dic1.get('xxx'))
赋值:
dic1['age'] = 19
dic1['xxx'] = 'hahaha'
dic={}
dic['sdfafs'] = 'afsafd'
3、更新数据项
dic[key] = value
如果key不存在,就是新增数据项
删除数据项
del dic[key] 删除键是'key'的条目
del dict 删除字典
4、字典方法
*判断key存在in 、not in
*dict.keys() 返回一个包含字典所有KEY的列表(Python3中为dict_keys类型对象)
*dict.values() 返回一个包含字典所有value的列表(Python3中为dict_keys类型对象)
*dict.items() 返回一个包含所有(键,值)元组的列表(Python3中为dict_keys类型对象)
*dic.pop(key) 删除键key的项并返回key对应的 value值,如果key不存在,报错
*dict.clear() 删除字典中的所有项或元素
*dict.fromkeys(seq, val=None) 创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认为None)
*dict.get(key) 返回字典中key对应的值,若key不存在字典中,则返回None
*adict.update(bdict) 将字典bdict的键值对添加到字典adict中,key存在,就更新value。key不存在就新增数据项
5、迭代
遍历字典的key
for key in adict.keys():
print(key)
遍历字典的value
for value in adict.values():
print(value)
遍历字典的项
for item in adict.items():
print(item)
遍历字典的key-value
for key, value in adict.items():
print('key=%s, value=%s' % (key, value))
6、排序:字典是无序的,排序后生成的是列表,或列表内嵌套元组
sorted(dic,value,reverse)
dic为可以迭代的对象,value 为排序的对象(这里指键或键值),reverse:注明升序还是降序,True--降序,False–升序(默认)
键排序
--sorted(dict.keys())
值排序
--sorted(dict.values())
项排序,按照键或按照值
--sorted(dict.items(), key=lambda item:item[0])
--sorted(dict.items(), key=lambda item:item[1])
scores = {'zhangsan': 98, 'lisi': 85, 'wangwu': 90}
(1) 对所有名字排序,按ASCII升序排列
sorted(scores.keys())
(2) 对所有成绩排序,按照高低分排列
sorted(scores.values(), reverse=True)
(3) 对所有人和成绩排序,按照名字的ASCII码降序排列
[('zhangsan', 98), ('lisi', 85), ('wangwu',90)]
sorted(scores.items(), key=lambda x:x[0], reverse=True)
(4) 对所有人和成绩排序,按照名字的长度升序排列
sorted(scores.items(), key=lambda x:len(x[0]))
(5) 对所有人和成绩排序,按照高低分排列
sorted(scores.items(), key = lambda x:x[1], reverse=True)
网友评论