https://i.cnblogs.com/settings

集合.序列.列表.词典的使用

集合

集合类型的定义

集合是多个元素的无序组合
-集合类型与数学中的集合概念一致
-集合元素之间无序,每个元素唯一,不存在相同元素
-集合元素不可更改,不能是可变数据类型

-集合用大括号{} 表示,元素间用逗号分隔
-建立集合类型用{} 或set()
-建立空集合类型,必须使用set()

>>>A = {"python", 123, ("python",123)} #使用{}建立集合
{123, 'python', ('python', 123)}
>>>B = set("pypy123") #使用set()建立集合
{'1', 'p', '2', '3', 'y'}
>>>C = {"python", 123, "python",123}
{'python', 123}

集合操作符

S | T 并,返回一个新集合,包括在集合S和T中的所有元素
S - T 差,返回一个新集合,包括在集合S但不在T中的元素
S & T 交,返回一个新集合,包括同时在集合S和T中的元素
S ^ T 补,返回一个新集合,包括集合S和T中的非相同元素
S <= T 或S < T 返回True/False,判断S和T的子集关系
S >= T 或S > T 返回True/False,判断S和T的包含关系
S |= T 并,更新集合S,包括在集合S和T中的所有元素
S -= T 差,更新集合S,包括在集合S但不在T中的元素
S &= T 交,更新集合S,包括同时在集合S和T中的元素
S ^= T 补,更新集合S,包括集合S和T中的非相同元素

集合类型的定义

>>>A = {"p", "y", 123}
>>>B = set("pypy123")
>>>A-B
{123}
>>>B-A
{'3', '1', '2'}
>>>A&B
{'p', 'y'}
>>>A|B
{'1', 'p', '2', 'y', '3', 123}

  

集合处理方法

S.add(x) 如果x不在集合S中,将x增加到S
S.discard(x) 移除S中元素x,如果x不在集合S中,不报错
S.remove(x) 移除S中元素x,如果x不在集合S中,产生KeyError异常
S.clear() 移除S中所有元素
S.pop() 随机返回S的一个元素,更新S,若S为空产生KeyError异常
S.copy()返回集合S的一个副本
len(S)返回集合S的元素个数
xin S判断S中元素x,x在集合S中,返回True,否则返回False
xnot in S判断S中元素x,x不在集合S中,返回True,否则返回False
set(x)将其他类型变量x转变为集合类型

>>>A = {"p", "y", 123}
>>>for i tem inA:
    print(item, end="")
p123y
>>>A
{'p', 123, 'y'}

>>>try:
    while True:
        print(A.pop(), end=""))
    except:
        pass
p123y
>>>A
set()    

 


 

序列

序列类型定义

序列是具有先后关系的一组元素
-序列是一维元素向量,元素类型可以不同
-类似数学元素序列:s0, s1, … , sn-1
-元素间由序号引导,通过下标访问序列的特定元素

序列类型通用操作符

x in s  如果x是序列s的元素,返回True,否则返回False
x not in s  如果x是序列s的元素,返回False,否则返回True
s+ t  连接两个序列s和t
s*n 或n*s  将序列s复制n次
s[i]  索引,返回s中的第i个元素,i是序列的序号
s[i: j]或s[i: j: k]  切片,返回序列s中第i到j以k为步长的元素子序列

>>>ls= ["python", 123,".io"]
>>>ls[::-1]
['.io', 123, 'python']
>>>s = "python123.io"
>>>s[::-1]
'oi.321nohtyp'

序列类型通用函数和方法

len(s) --返回序列s的长度,即元素个数
min(s) --返回序列s的最小元素,s中元素需要可比较
max(s) --返回序列s的最大元素,s中元素需要可比较
s.index(x) 或s.index(x, i,j)  --返回序列s从i开始到j位置中第一次出现元素x的位置
s.count(x)  --返回序列s中出现x的总次数

>>>ls = ["python", 123,".io"]
>>>len(ls)
3
>>>s = "python123.io"
>>>max(s)
'y'

元组类型定义

元组是序列类型的一种扩展
-元组是一种序列类型,一旦创建就不能被修改
-使用小括号() 或tuple() 创建,元素间用逗号, 分隔
-可以使用或不使用小括号

>>>creature = "cat", "dog","tiger","human"
>>>creature
('cat', 'dog', 'tiger', 'human')
>>>color = (0x001100, "blue", creature)
>>>color
(4352, 'blue', ('cat', 'dog', 'tiger', 'human'))

  

元组类型操作

元组继承序列类型的全部通用操作
-元组继承了序列类型的全部通用操作
-元组因为创建后不能修改,因此没有特殊操作
-使用或不使用小括号

>>>creature = "cat", "dog","tiger","human"
>>>creature[::-1]
('human', 'tiger', 'dog', 'cat')
>>>color = (0x001100, "blue", creature)
>>>color[-1][2]
'tiger'

列表

列表类型及操作

列表是序列类型的一种扩展,十分常用
-列表是一种序列类型,创建后可以随意被修改
-使用方括号[] 或list() 创建,元素间用逗号, 分隔
-列表中各元素类型可以不同,无长度限制

>>>ls = ["cat", "dog","tiger",1024]
>>>ls
['cat', 'dog', 'tiger', 1024]
>>>lt= ls
>>>lt
['cat', 'dog', 'tiger', 1024]

  列表类型操作函数和方法

ls[i] = x  --替换列表ls第i元素为x
ls[i: j: k]= lt   --用列表lt替换ls切片后所对应元素子列表
del ls[i]   ---删除列表ls中第i元素
del ls[i: j: k]   ---删除列表ls中第i到第j以k为步长的元素
ls+= lt   ---更新列表ls,将列表lt元素增加到列表ls中
ls*= n    ---更新列表ls,其元素重复n次

>>>ls = ["cat", "dog","tiger",1024]
>>>ls[1:2]= [1, 2, 3, 4]
['cat', 1, 2, 3, 4, 'tiger', 1024]
>>>del ls[::3]
[1, 2, 4, 'tiger']
>>>ls*2
[1, 2, 4, 'tiger', 1, 2, 4, 'tiger']

列表类型操作函数和方法

ls.append(x)    ---在列表ls最后增加一个元素x
ls.clear()    ---删除列表ls中所有元素
ls.copy()    ---生成一个新列表,赋值ls中所有元素
ls.insert(i,x)    ---在列表ls的第i位置增加元素x
ls.pop(i)    ---将列表ls中第i位置元素取出并删除该元素
ls.remove(x)    ---将列表ls中出现的第一个元素x删除
ls.reverse()    ---将列表ls中的元素反转

>>>ls = ["cat", "dog","tiger",1024]
>>>ls.append(1234)
['cat', 'dog', 'tiger', 1024, 1234]
>>>ls.insert(3, "human")
['cat', 'dog', 'tiger', 'human', 1024, 1234]
>>>ls.reverse()
[1234, 1024, 'human', 'tiger', 'dog', 'cat']

  小结:序列类型及操作

-序列是基类类型,扩展类型包括:字符串、元组和列表
-元组用()和tuple()创建,列表用[]和set()创建
-元组操作与序列操作基本相同
-列表操作在序列操作基础上,增加了更多的灵活性

实例:基本统计值计算

def getNum(): #获取用户不定长度的输入
    nums= []
    iNumStr= input("请输入数字(回车退出): ")
    while iNumStr != "":
        nums.append(eval(iNumStr))
        iNumStr= input("请输入数字(回车退出): ")
    return nums
def mean(numbers): #计算平均值
    s = 0.0
    for num in numbers:
        s = s + num
    return s / len(numbers)
def dev(numbers, mean): #计算标准差
    sdev= 0.0
    for num in numbers:
        sdev= sdev+ (num-mean)**2
    return pow(sdev/ (len(numbers)-1), 0.5)
def median(numbers): #计算中位数
    new = sorted(numbers)
    size = len(numbers)
    if size % 2 == 0:
        med = (new[size//2-1] + new[size//2])/2
    else:
        med = new[size//2]
    return med
n = getNum()
m = mean(n)
print("平均值:{},标准差:{:.2},中位数:{}.".format(m, dev(n,m),median(n)))

 

词典

字典类型是“映射”的体现,映射是一种键(索引)和值(数据)的对应

-键值对:键是数据索引的扩展
-字典是键值对的集合,键值对之间无序
-采用大括号{}和dict()创建,键值对用冒号: 表示

[ ] 用来向字典变量中索引或增加元素

>>>d = {"中国":"北京","美国":"华盛顿","法国":"巴黎"}
>>>d
{'中国': '北京', '美国': '华盛顿', '法国': '巴黎'}
>>>d["中国"]
'北京'
>>> de = {} ; type(de)
<class 'dict'>

  字典类型操作函数和方法

deld[k]     ---删除字典d中键k对应的数据值
k in d     ---判断键k是否在字典d中,如果在返回True,否则False
d.keys()     ---返回字典d中所有的键信息
d.values()     ---返回字典d中所有的值信息
d.items()     ---返回字典d中所有的键值对信息

>>>d = {"中国":"北京","美国":"华盛顿","法国":"巴黎"}
>>>d.get("中国","伊斯兰堡")
'北京'
>>>d.get("巴基斯坦","伊斯兰堡")
'伊斯兰堡'
>>>d.popitem()
('美国', '华盛顿')

  

posted @ 2019-11-18 17:15  LLLN  阅读(326)  评论(0)    收藏  举报
Copyright © 2021 llln Powered by .NET 5.0 on Kubernetes