博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
7-内置数据结构
阅读量:4841 次
发布时间:2019-06-11

本文共 3703 字,大约阅读时间需要 12 分钟。

双层列表循环变异

#a 为嵌套列表,或者叫双层列表a=[['one',1],['two',2],['three',3]]for k,v in a:    print(k,'--',v)

列表内涵:list content

  • 通过简单方法创作列表
#for 创建a=['a','b','c']#用list a 创建一个list b#下面代码的含义是,对于所有a中的元素,逐个放入新列表b中b = [i for i in a]print(b)
#过滤a = [x for x in range(1,35)]b=[m for m in a if m % 2 == 0]print(b)
#列表生成式可以嵌套a = [i for i in range(1,4)]print(a)b=[i for i in range(100,400) if i % 100 == 0]print(b)c = [m+n for m in a for n in b]print(c)    #相当于for m in a:    for n in b:        print(m+n, end="   ")print()#嵌套的列表生成式也可以用条件表达式c = [ m+n for m in a for n in b if m+n < 250]print(c)

关于列表的常用函数

# len:求列表长度# max:求列表中最大值# list:将其他格式的数据转换成list# 把range产生的内容转换成listprint(list(range(10,30)))
'''# append 插入一个内容,在末尾追加'''a = [ i for i in range(1,5)]print(a)a.append(100)print(a)
'''# insert:指定位置插入# insert(index,data),插入位置是index前面'''print(a)a.insert(3,666)print(a)
'''# del 删除# pop,从对位拿出一个元素,即把最后一个元素取出来'''print(a)last_ele =a.pop()print(last_ele)print(a)
'''# remove:在列表中删除指定的值得元素# 如果被删除的值没在list中,则报错'''print(a)print(id(a))a.remove(666)print(a)print(id(a))# 输出两个id值一样,说明,remove操作是在原list直接操作
# clear:清空print(a)print(id(a))a.clear()print(a)print(id(a))'''# 如果不需要列表地址保持不变,这清空列表可以使用以下方式# a = list()# a = []'''
# reverse:翻转列表内容,原地翻转(地址不变)a = [ 1,2,3,4,5]print(a)print(id(a))a.reverse()print(a)print(id(a))
# extend:扩展列表,两个列表,把一个直接拼接到后一个上a = [1,2,3,4,5]b = [6,7,8,9,10]print(a)print(id(a))a = extend(b)print(a)print(id(a))'''#地址不变'''
# count:查找列表中指定值或元素的个数a = [i for i in range(1,11)]print(a)a.append(8)print(a)a.insert(4,8)print(a)a_len=a.count(8)print(a_len)#8的个数
# copy:拷贝,浅拷贝'''list的简单赋值操作,都是传地址'''# 解决以上问题,list赋值需要采用copy函数b = a.copy()b[3]=888'''copy函数是一个浅拷贝函数,即只拷贝一层内容深拷贝需要使用特定工具'''

元组

元组的特性

  • 有序列表
  • 元组数据可以访问,不能修改
  • 元组数据可以是任意类型
  • 总之,list所有特性,除了不可修改外,元组都具有
  • list具有的一些操作,比如索引,分片,序列相加,相乘,成员资格操作等
#索引操作t = (1,2,3,4,5)print(t[3])
#超标操作print(t[12])
'''tuple不可修改,指的是内容不可修改修改tuple内容会导致报错'''
#元组的遍历#单层元组遍历t = (1,2,3,4,5,6)for i in t:    print(i,end=" ")#双层元组遍历t=((1,2,3),(4,5,6),(7,8,9))for k,m,v in t:    print(k,"--",m,"--",v)

元组变量交换法

两个变量交换值a = 1b = 2a,b=b,a

集合-set

  • 集合是高中数学中的一个概念
  • 一堆确定的无序的唯一的数据,集合中每一个数据成为一个元素
# 集合的定义 s = set()

集合的特征

  • 集合内数据无序,即无法使用索引和分片
  • 集合内部数据元素具有唯一性,可以用来排除重复数据
  • 集合内的数据,str,int,float,tuple,冰冻集合等,即内部只能放置可哈希数据

集合的内涵

#普通集合内涵s = {22,323,412,554,3,76,23,213,32,32}print(s)ss = {i for i in s}print(ss)#带条件的集合内涵sss = {i for i in s if i % 2 == 0}print(sss)
# set:生成一个集合l = [1,2,3,4,5,6]s = set(l)print(s)
# add:向集合内添加元素s = {1}s.add(334)print(s)
# copy:拷贝# remove:移除指定的值,直接改变原有值,如果要删除的值不存在,报错# discard:移除集合中指定的值,跟remove一样,值不存在,不报错
  • 集合函数
    • intersection:交集
    • difference:差集
    • union:并集
    • issubset:检查一个集合是否为另一个子集
    • issuperset:检查一个集合是否为另一个超集
s_1 = s1.difference(s2)相当于s_1 = s1 - s2

frozen set:冰冻集合

  • 冰冻集合就是不可以修改的集合
  • frozeset是一种特殊集合
#创建s = frozenset()print(s)

字典

  • 字典是一种组合数据,没有顺序的组合数,数据以键值对形式出现
# 创建d = {}d = dict()d = {"one":1,"two":2,"three":3}d = dict({"one":1,"two":2,"three":3})d = dict(one=1,two=2,three=3)d = dict([("one",1),("two",2),("three",3)])

字典的特征

  • 字典是序列类型,但是是无序序列,所以没有分片和索引
  • 字典中的数据每个都有键值对组成,即kv对
    • key:必须是可哈希的值,比如int,string但是,list,set,dict不行
    • value:任何值

字典常见操作

# 访问数据d = {"one":1,"two":2,"three":3}#中括号内是键值print(d["one"])d["one"] = "eins"print(d)# 删除del d["one"]# 成员检测,in,not in# 成员检测的是key内容

字典生成式

d = {"one":1,"two":2,"three":3}dd = {k:v for k,v in d.items()}print(dd)# 加限制条件的字典生成式dd = {k:v for k,v in d.items() if v % 2 ==0}

字典相关函数

# 通用函数:len ,max,min,dict# str(字典):返回字典的字符串格式
# clear:清空字典# items:返回字典的键值对组成的元组格式i = d.items()# keys:返回字典的键组成的一个结构k = d.keys()# values:一个可迭代对的结构v = d.values()# get:根据指定键返回相应的值,可以设置默认值print(d.get("one"))存在返回1,不存在返回none print(d.get("one",100))存在返回1,不存在返回100
# fromkeys:使用指定的序列作为键,使用一个值作为字典的所有键的值l = ['eins','zwei','drei']d = dict.fromkeys(l,'jjc')print(d)给每个键赋予同一个值

转载于:https://www.cnblogs.com/rener0424/p/10327273.html

你可能感兴趣的文章
java hasmap对象的深复制实现:字节码复制和对象序列化成字符串复制比较。
查看>>
非一般的数据挖掘机:关联规则法
查看>>
粗糙的贝叶斯转化概率预测模型
查看>>
【随笔】8月14日
查看>>
Spring支持的@Transactional声明式事务管理的功能
查看>>
雷林鹏分享:jQuery EasyUI 表单 - 格式化下拉框
查看>>
导出excel失败,提醒提示加载类型库/DDL出错
查看>>
.NET基础架构方法—DataTableToExcel通用方法
查看>>
一篇很全面的freemarker教程
查看>>
linux常用命令(个人总结)
查看>>
city-picker插件使用-移动h5三级联动
查看>>
如何安装多操作系统
查看>>
Codeforces 1132G(dfs序+线段树)
查看>>
Hibernate
查看>>
十二、异常处理
查看>>
HashMap和HashTable的区别
查看>>
团队作业9————事后诸葛亮分析
查看>>
quartz.net 使用(一)-执行定时计划任务
查看>>
github上的版本和本地版本冲突的解决方法
查看>>
Centos7安装gitlab服务器
查看>>