python初学2(容器)
容器容器是一种可以存放多个数据的数据类型python提供的容器有列表元组集合字典列表常见的列表顺序表链表栈队列 --基于链表的数据结构来实现python里面是没有数组的数组的存储空间是连续的所以其查询更快增删改慢python中的列表一般由双向链表来实现每一个节点有三个区域头指针尾指针和数据区写法ls [1,2,3,4] 可以用来写列表常量本质是直接创建列表ls list([1,2,3,4]) 可以用来进行数据类型的转化浅拷贝其实地址较内部的[]已发生改变通过索引从0开始来遍历列表用while来展示list1 [1,2,3,4] index 0 while index len(list1): #len来查看列表的长度 print(list1[index]) indexindex1常见方法append() 向尾部添加数据insertindex,object向指定位置添加元素sort排序只能排int,字母按照ASCll编码index()查找元素第一次在列表中出现的位置如果没有这个元素则会报错reverse 列表倒转remove() 通过元素来移除元素没有该元素则会抛出异常count 统计元素总数clear() 清除元素copy() 浅拷贝对象不是引用传递在堆内存中进行对象拷贝extend() 合并列表pop() 删除最后一个元素并返回该元素可pop(i)一些细节点1.数据的替换可以通过索引直接赋值2.list内部的数据类型可以不同3.list内部可以有list举个例子p [asp, php]s [python, java, p, scheme]拿到s里的php的索引是s[2][1]集合set() 哈希结构语法s set({1,2,3,4}) 创建集合并赋值注意set()是必写的如果直接写s{}这是创建了一个字典而非集合因为和hash相关所以是无序的并且是不能重复的不能通过索引来查找方法clear()remove()copy()add() 添加元素如果元素重复则不能进行添加因为涉及到hash算法difference 差集intersection 交集union 并集update 更新集合合并集合discard 移除元素元组元组的创建t (1,2,3,4)全局元素创建t tuple(元素...)元组是有序的可以通过索引来查找数据下标亦可以是负数但是不可赋值元组是一个不可变元素所以创建之后它的数据就不能改变但如若元素是可变元素则会改变举例t (a, b, [A, B])t[2][0] Xt[2][1] Y这种情况下元组的数据发生改变但实际上改的是元组内部列表的值而元组的不变是内部元素的地址指向不变。字典在其他语言中也称为map,是用键值对的形式来进行存储的dict ({name:sgxm,age:16})方法clear,getkeys返回所有的键values() 返回所有的值setdefault(key,默认值) 设置默认值查询 key如果 key 不存在就自动新增这个键并赋值存在就直接返回原有值不会修改items 返回键值对 可迭代的对象popkey通过键来移除键值对如果没有则抛出异常popitem 删除并返回字典最后插入的一组键值对遍历的方法for k in d: print(k,d.get(k)) for k in d.keys(): print(k,d[k]) for k,v in d.items(): print(k,v)字符串常见方法count() 字符或字符串出现的次数endswith() 判断字符串是否以xxx结尾startswith() 判断字符串是否以xxx开头index() 查找字符串出现的位置无则抛出异常rindex()反方向的找查找最后一个位置find()查找字符或字符串在字符串第一次出现的位置如果不存在返回-1rfind()encode(编码形式)将字符串转化为字节的方法相较于index(),find()程序不会崩溃format() 格式化字符串name 小明 age 18 s 姓名{}年龄{}.format(name, age) # 下标写法 s2 姓名{0}年龄{1}.format(name, age) # 关键字参数 s3 姓名{n}年龄{a}.format(n小明, a18)is...()这种都是对字符串内容进行判断title() 转化为标题形式lower() 转化为小写upper() 转化为大写split() 以什么符号切割字符串返回列表strip()清空两侧空格lstrip()rstrip()join() 分隔符去主动连接序列names [张三,李四,王五] print( | .join(names)) # 张三 | 李四 | 王五ljust()左对齐rjust()