1、格式:listname=[元素1,元素2,元素3,……元素n]
2、注意
list()函数用于生成列表或类型转换,其中内容必须为可迭代对象,若为不可迭代的对象则报错;将列表转换为列表无意义且浪费资源。
start: 切片开始的索引(包含),若省略则为0
end:切片截止的索引(不包含),若省略则为整个列表长度
step:切片长度,若省略则为1,step省略则最后一个冒号也可以省略,若为负值则由由向左反向切片
for item in listname:处理item
for index,item in enumerate(listname):处理 index 和 item
if t1.count(n) > 0: # 先判断元素是否存在
t1.remove(n)
格式:listname.count(obj)
作用:获取列表中某元素出现次数,只能精确匹配,count()一般与remove()配对使用
1、sort()方法排序
格式:listname.sort(key=None , reverse=False)
key:元素排序时比较的键
reverse:排序规则,Ture为降序,False为升序,默认为升序
注意:sort()内置方法会改变列表的值,返回值为None
2、使用内置函数sorted()排序,可以不改变列表的值进行排序
格式:sorted(listname , key=None , reverse=False)
1、index()方法:用来查找某个元素在列表中第一次出现的位置(索引值),若该元素不存在则会导致异常,最后使用count()方法进行判断
格式:listname.index(obj, start , end)
obj:查找的元素
start:起始位置
end:结束位置(不包含)
返回值为索引
2、使用in 和 not in 查找列表元素
3、使用二分法查找列表元素(折半查找),要求列表必须有顺序则必须先排序
1、作用:将列表元素组合成一个字符串
2、格式:char.join(seq)
char:是组合后的分隔符
seq:表示处理的对象,必须为列表、元组等序列元素
分析:列表的赋值相当于取别名,即两者名称都指向同一个堆栈区地址列表对象,操作任意一个,另一个同步变化
1、列表浅拷贝
2、列表深拷贝
作用:使用列表推导式可以生成新列表
格式:listname=[表达式 , for 循环变量 in range() ]
创建格式1:listname=[[一维列表1],[一维列表2],[一维列表3],……,[一维列表n]]
创建格式2:for循环创建
创建格式3:列表推导式创建(常用)
左下半三角元素,行>列
右上半三角元素,行<列
主对角线,行=列
副对角线,j=行-i-1
修改、增加元素
删除元素(但可以整体删除元组)
如:remove、append、insert、pop等方法不可使用
格式:tuplename=(元素1,元素2,元素3……,元素n)
元素个数无限制、类型可以都不相同
注意:元组是不可变序列,存储的元组不可删除,但允许整体删除元组==
格式:del tuplename
1、元组只保证一级子元素不可变,对于嵌套的元素,不保证不可变
2、元组支持列表的相关操作,但注意以下问题
元组连接(+)时必须维持类型还是元组,即连接对象不能是字符串或列表
元组连接只有一个元素的元组时,必须加逗号
list():转为列表的函数
tuple():转为元组的函数
注意:可以将元组转为列表进行插入删除等操作,在转为元组,间接实现‘修改’元组
1、相同点
2、区别:
列表为可变序列,元素可以任意删除、修改、插入
元组为不可变序列,元素不能做上述操作
元组不支持:append(),extend(),insert(),remove()等方法
3、元组的优点
字典属于可变序列,使用“键:值(key:value)”的方式==配对==存储数据,类似于新华字典中“拼音:汉字”之间的映射关系
dictionary={key1:value1 ,key2:value2,……,keyn:valuen}
dictionary为字典名称
字典使用花括号{}作为标志
key为元素的键,必须唯一,且不可变,可以是字符串、数字、元组
value:元素的值,可以为任意数据,不需要唯一
格式:dictname[键]
dict1 = {'name': 'zara', 'age': 18, 'class': 'first'}
print(dict1['name'], dict1['age'], dict1['class']) 通过key访问value
格式:dictname[键]=值
删除特定元素:del 字典名[键]
清空字典内容:dictname.clear()
整体删除字典:del 字典名
格式:dictname.get(key, default)
key:指定键
default:可选,用于指定键不存在时返回的默认值,若省略则返回None
1、格式1:items()方法:返回(键:值)数据对
2、格式2:键:值方法
3、格式3:keys():返回字典所有的键
values():返回所有的值
作用:建立字典的一种字典内置方法
格式:newdictname=dict.from.keys(seq,value)
seq:建立的字典列表,默认为键
value:字典的值,若省略为None
集合是一种无序不重复的元素集。
一般用于去重和关系测试
格式:setname={元素1,元素2,……元素n}
set1 = {1, 2, 3, 4, 5, 6}
set2 = {'name', 'num', 'age', 'score'} # 集合本质为无序可变序列,输出时可能顺序不
set3=set('命运给与我们的不是失望之酒,而时机会之杯')
set4=set([1,2,3,4,5,6,7,8,9])
set5=set() # 空集合,不能使用{}
set6=set(('apple',)) # 创建只有一个元素的集合,需要加逗号
1、添加元素:setname.add(元素)
2、删除元素:
setname.remove(元素): 删除指定元素
setname.pop():随机删除一个元素
setname.clear() :清空内容
交集:&
并集: |
差集: -
对称差集: ^ , 排除共同部分
issubset():测试是否为子集,返回True或False
issuperset() : 测试是否为父集,返回True或False
概念:set是可变集合,使用frozenset可以改变集合为不可变序列,即冻结集合,定义好之后不允许修改,可以参考元组
| 数据结构 | 是否可变 | 是否重复 | 是否有序 | 定义符号 |
|---|---|---|---|---|
| 列表(list) | 可变 | 可重复 | 有序 | [ ] |
| 元组(tuple) | 不可变 | 可重复 | 有序 | ( ) |
| 字典(dictionary) | 可变 | 可重复 | 无需 | {key:value} |
| 集合(set) | 可变 | 不可重复 | 无序 | { } |
八、字符串(str)
字符串多余一行时,可以使用三引号(三个双引号)将字符串包夹起来
原则:字符串属于不可变的序列,可以通过切片操作截取字符串
格式:string[start , end ,step]
1、分割字符串:将字符串分割为列表
格式:strname.split(sep,maxsplit)
sep:指定的分割符,可以包含:空格 \t \n None ,
maxsplit:指定分割次数,若省略则为1
2、合并字符串:将多个字符串采用固定的分隔符进行连接
格式:newstrname=string.join(iterable)
newstrname:合并之后的新字符串
string:合并的固定分隔符
iterable:可迭代对象,即要合并字符串
1、count()方法
作用:检索字符串在另一个字符串中出现的次数,若不存在则返回0
格式:strname.count(sub) sub:要检索的子串
2、find () 方法
作用:检索是否包含指定字符串,若不存在则返回-1,若存在则返回首次出现的索引值
3、startswitch()方法:检索字符串是否以指定的字符串开头,是则返回True,否则返回False,格式:strname.startswitch(sub)
4、endswitch()方法:检索字符串是否以指定的字符串结尾,是则返回True,否则返回False,格式:strname.endswitch(sub)
大写转小写:strname.lower()
小写转大写: strname.upper()
大小写互换:strname.swapcase()
格式:strname.isalpha() ,成立返回True,否则返回False
strname.strip(char) : 删除字符串左右两边的指定字符
strnamne.lstrip(char) : 删除字符串左侧指定字符
strname.rstrip(char) : 删除字符串右侧指定字符
格式:strname.replace('...','...')
1、格式:strname.format(args)
args:需要转换的部分,如有多项需要使用逗号进行间隔
2、模板格式:{index : fill align sign # width.precision type}
占位符:{} 和 :
参数:
index:索引位置,从0开始,若省略则自动分配
fill : 空白处填充的字符
align:设置的对齐方式,一般与width配合使用
< : 左对齐
>: 右对齐
=:内容右对齐,只针对数字类型,即将数字类型内容放在填充字符的最右侧
^ : 内容居中
sign:指有无符号
+:正数加正号,负数加负号
-: 正数不变,负数加负号
空格:正数加空格,负数加负号
# :值为二、八、十六进制数会显示0b 、0o、0x前缀
width:宽度
.precision: 保留小数位数
type:指定类型
3、常见格式化字符:
| 格式化字符 | 作用 | 格式化字符 | 作用 |
|---|---|---|---|
| s | 字符串 | b | 二进制 |
| d | 十进制 | o | 八进制 |
| c | unicode字符 | x 或X | 十六进制 |
| e或E | 科学计数法 | f或F | 浮点数(6位小数) |
| g或G | 自动在f和e之间切换 | % | %字符(6位小数) |