python的数据结构

'''容器可以进行增删改查'''
'''
列表:[],可变、有序可重复、类型可不一样,链表结构
列表的操作:
    增:append(元素),extend(iterable):可添加多个元素,insert()在指定位置添加元素
    删:remove(元素),pop(index)默认删除最后一个,clear()清空
    改:list[index]=新元素
    查:index(元素),[index]
    截取:[start:end]/[start:end:步长]
    排序:sort()升序 reverse()倒叙,反转 sort(reverse=True)降序(升序+倒叙)
    拷贝:
        地址拷贝==:引用类型变量的赋值(栈内存),地址赋值
        浅拷贝copy():一维列表的数据复制以及多维列表地址的复制,比如二维数组中的列表在外层列表中存储的是地址不是数据,所以浅拷贝只能拷到内层列表的地址
        深拷贝deepcopy():导入copy模块。多维列表的数据复制,不复制内层列表的地址而是直接将该地址对应的列表数据复制下来(开辟一个空间用来存储内置列表)
        注意:列表中存储的内层列表只是内层列表的地址,另外列表的下标是地址偏移量(int的是4个字节也就是32位)
    遍历:
    while 用下标
    for 用字符串或者列表、元组,直接遍历的是元素
    迭代器
列表的运算:
    +:合并
    *:重复元素
    判断:in/not in 判断元素是否在该列表中
    计数:count(元素) 记录该元素在该列表中出现的次数
'''
#1.加法运算:相当于拼接操作(将两个列表拼接成一个新的列表)
# print(["我是一只"]+["小小鸟"])

#2.乘法运算:生成一个元素以乘数为倍数的新的数组
a=[1,2,3,4]
# # print(id(a)==id(a*2),a*2)

#3.判断元素是否在列表:元素 in/not in 列表
# print(1 not in a)

# #4.在列表的尾部追加一个元素:列表.append(元素),不可以追加多个
# a.append(3)
# print(a)
# #5.在列表的尾部添加多个值:列表.extend(iterable)#包括字符串,多条记录要用容器来添加
# a.extend("woshi")
# print(a)

# #6.在指定位置插入一个值,原数据向后延伸:列表.insert(下标,对象),如果不存在该下标就插入在最后
# a.insert(0,"第一")
# print(a)

# #7.删除指定的元素:remove(元素),移除第一个出现该字符的元素
# a.remove("第一")
# print(a)

# #8.根据下标删除元素,默认删除最后一个:pop(下标)
# a.pop(0)
# print(a)

#9.清空列表clear(),del也可以删除列表或者列表中的元素,但是一般不用在列表,一般只是用来删除变量
# a.clear()
# print(a)

#10.根据元素找到对应的下标
# print(a,a.index(3))#元素不存在,会报错

# #11.正序(升序),从小到大:sort(),reverse默认为False升序,为True降序
# a.extend([10,5,4,56])
# print(a.sort(),a)

#12.倒叙(降序),从大到小:sort(),reverse默认为False升序,为True降序。或者reverse()也是降序
# print(a.sort(reverse=True),a)
# print(a.reverse(),a)

'''
遍历列表:
'''
#1.while
# i=0
# while i<len(a):
#     print(a[i])
#     i+=1

#2.for循环
# for i in a:
#     print(i)

#3.迭代器遍历
# a=iter(a)
# print(next(a))#遍历一个

'''
元组tuple:(),不可变,可重复有序,类型可以不一样
无增删改,只有查:count()、index()
应用:在不想让数据被修改时
'''
#单元素的元组
# print([1,])#后面的逗号不可省略
tuple1=(1,2)
list1=list(tuple1)
print(type(list1))
'''
字典:无序无下标,键唯一不可重复,用[]或者get,[]容易出现角标越界,get()获取不到返回None
创建:{},键一般是不可变的,即:是数字、字符串、元组
添加:键第一次出现并赋值就是添加
    [newkey]=value:添加一个键值对
    update(字典):添加多个键值对
    setdefault(key,value):添加一个键值对
修改:键再次出现并赋值就是修改
    [oldkey]=value
删除:
    pop():通过键删除,返回删除的元素
    clear():清空
查  :
    [key]:无会报错
    get():无返回None
    .key:所有的键(列表)
    .values:所有的值(列表)
    .items:所有的键值对(元组)
    
遍历:for循环默认遍历键
    字典.keys():遍历值(列表)
    字典.values():值(列表)
    字典.items():遍历键和值(元组)
'''
dict1={"name":"张三","age":18}
print(list(dict1.items()))
#增,[]:添加一个、update(字典):添加多个、setdefault(key,value):添加一个
# dict1["sex"]="男"
# print(dict1)
#删
# dict1.pop("sex")#返回删除的元素
# print(dict1)
# print("....................")
#遍历键
# for i in dict1:
#     print(i)#遍历键
# for i in dict1.keys():
#     print(i)#遍历键
#遍历值
# for i in dict1.values():
#     print(i)#遍历值
#遍历键和值
# for i,j in dict1.items():#i:键,j:值
#     print(i,j)

'''
用字典保存以空格分开的字符串每个字符的次数
'''
# dict2={}
# str1=input("请输入一个字符串:")
# for i in str1.split(" "):
#         dict2[i]=str1.count(i)
# print(dict2)

'''
集合set:无序无下标,不可重复
创建:
    {value}:单个{}是字典类型,{value}中的value不能是键值对
    set(iterable):如果可迭代的是字典,只保存字典的键
增:
    add():加一条数据,可添加number,字符串
    update(itearable):添加多条数据
删:
    pop():无下标,从左开始删
    remove(元素):根据元素删除
    clear():清空
查:
    将set集合转换成list列表,通过下表来查

'''
set1={"wo"}
# #增
# set1.add("he")
# print(set1)
# set1.update([1,2,3])#无返回值
# set1.union([1,2,3])#不修改原有集合,创建一个新的set集合并添加原集合的元素和新添加的元素,返回这个新的集合
# print(set1.union([1,2,3]))
#删
# set1.remove("he")#删除指定的元素
# set1.pop()#删除第一个
# set1.clear()#清空
# print(len(set1))
#改

# #查,转换成列表通过下标来查询
# list2=list(set1)
# print(list2[0])
#for循环遍历或者迭代器
# for i in set1:
#     print(i)

#交集,和并集
# print(set1 & {"我是一只小小鸟"})#交集,取相同的元素
# print(set1 | {"我是一只小小鸟"})#并集,相当于添加多个元素



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值