zoukankan      html  css  js  c++  java
  • 【python基础】之元组 集合 字典

    元组

    元组:元组和列表类似。但是元组中的元素是固定的(不能给一个元组添加,删除和替换元素以及重新排序)

    1.创建元组

    t1 =  () #创建一个空元组
    t2 = (1, 2, 3) 
    t3 = tuple([2 * x for x in range(1, 5)]) #从列表中创建元组
    t4 = tuple("abac") #从字符串中创建元组  t4 = ['a', 'b', 'a', 'c']

    2.使用

    可以使用len, min,max, sum函数操作元组;用for循环遍历元组的元素;in和not in判断元素是否在元组中;用比较运算符对元素进行比较。
    >>> tuple1 = tuple([7,1,2,23,4,5])
    >>> tuple1
    (7, 1, 2, 23, 4, 5)
    >>> len(tuple1)  
    6
    >>> min(tuple1)  #tuple1元组中有非数字时会报错
    1
    >>> max(tuple1)  #tuple1元组中有非数字时会报错
    23
    >>> sum(tuple1)  #tuple1元组中有非数字时会报错
    42
    >>> for x in tuple1: #用for循环遍历元组的元素
        print(x)
    
        
    7
    1
    2
    23
    4
    5
    >>> 7 in tuple1 #in和not in判断元素是否在元组中
    True
    >>> 3 in tuple1
    False
    >>> 
    
    

    集合

    集合中的元素是不重复且不按任何顺序放置的。

    数组元组和字符串元组是不可变的。

    1.创建集合(set函数)

    s1 = set() #创建空集合
    s2 = {1, 3, 5} 
    s3 = set((1, 3, 5)) #从元组中创建集合
    s4 = set([x * 2 for x in range(1, 10)]) #从列表中创建集合
    s5 = set("abac") #从字符串中创建集合 s5 = {'a', 'b', 'c'}

    集合可以包含类型相同或不同的元素

    s6 = {1, 3, "abc", 'a'} 

    2.操作和访问集合

    add()和remove()

    使用add()和remove()方法添加和删除元素
    >>>s1 = {1, 2, 4}
    >>>s1.add(6)
    {1, 2, 4, 6}
    >>>s1.remove(6)
    {1, 2, 4, 6}
    下文引用s1集合,承接下文

    len(),min(), max(),sum() (后三个只对集合元素全为数字有效)

    >>>len(s1) #求集合的长度,即元素的个数
    3
    >>>max(s1) #求集合<span style="font-family: Arial, Helvetica, sans-serif;">元素中的</span>最大值
    4
    >>>min(s1) #求集合元素中的最小值
    1
    >>>sum(s1) #求集合元素的和
    7

    for循环遍历集合中的元素

    >>>for x in s1:
        print(x)
    
        
    1
    2
    4

    in和not in判断元素是否在集合中

    若in和not in的表达式为真则返回True,否则返回False
    >>> 1 in s1
    True
    >>> 2 in s1
    True
    >>> 1 not in s1
    False

    3.子集和超集 (issubset()函数和issuperset()函数)

    子集:如果集合s1中的每个元素都在集合s2中,则称s1是s2的子集。
    超集:如果一个集合S1中的每一个元素都在集合S2中,且集合S2中可能包含S1中没有的元素,则集合S2就是S1的一个超集。

    使用issubset()判断集合s1是否是s2的子集,issuperset()判断集合s1是否是s2的超集。

    >>> s1 = {1, 2, 4}
    >>> s2 = {1, 3 ,4 , 5, 2}
    >>> s1.issubset(s2) #s1是s2的一个子集
    True
    >>> s2.issuperset(s1) #s2是s1的一个超集
    True
    若s1是s2的子集则s2一定是s1的超集

    4.关系运算符(==, !=, >, >=, <,<=)

    ==               若s1和s2相等(包含相同的元素),返回true
    !=    若s1和s2不相等(包含不相同的元素),返回true
    > 如果s1是s2的真超集,则s1>s2返回true
    >= 如果s1是s2的超集,则s1>=s2返回true
    < 如果s1是s2的真子集,则s1<s2返回true
    <= 如果s1是s2的子集,则s1<=s2返回true
    注意:集合中的元素是没有顺序的。

    5.集合运算(并集,交集,差集,对称差集合)

    并集

    定义:两个集合的的所有元素的集合
    方法:union 或 运算符 "|"
    >>> s1 = {1, 2, 4}
    >>> s2 = {1, 3, 5}
    >>> s1.union(s2)
    {1, 2, 3, 4, 5}
    >>> s1 | s2
    {1, 2, 3, 4, 5}
    下文引用此处集合s1和s2。

    交集

    定义:两个集合共同元素的集合
    方法:intersction 或 运算符 "&"
    >>> s1.intersection(s2)
    {1}
    >>> s1 & s2
    {1}

    差集

    定义:出现在集合s1中但不出现在集合s2中元素的集合。
    方法:difference 或 运算符"-"
    >>> s1.difference(s2)
    {2, 4}
    >>> s1 - s2
    {2, 4}

    对称差集合

    定义:除了两个集合中共同元素之外所有在两个集合中的元素之和。
    定义:symmertric_difference 或运算符"^"
    >>> s1.symmetric_difference(s2)
    {2, 3, 4, 5}
    >>> s1 ^ s2
    {2, 3, 4, 5} 

    字典

    一个字典就是一个存储键值对集合的容器对象。

    1.创建

    字典中由数个条目组成:key:value

    >>> students = {"001":"sky","002":"will"}  #创建有两个条目的字典
    >>> students["001"]
    'sky'
    >>> student2 = {}  #创建一个空字典 

    2.添加,修改和获取值

    格式:dictionaryName[key] = value

    >>> students["003"] = "good"
    >>> students 
    {'002': 'will', '001': 'sky', '003': 'good'}  #字典students中新增条目
    >>> students["003"] 
    'good'
    >>> 
    注意:若你要添加的关键字key值已存在,则替换该关键字对应的value值。

    3.删除条目

    格式:del dictionName[key]

    >>> del students["003"]
    >>> students          #删除第三个条目
    {'001': 'sky','002': 'will'}
    >>> 
    若字典中不存在关键字key则会出现KeyError异常

    4.常用的操作

    使用for循环来遍历条目

    >>> for viewKey in students:
        print(viewKey + ":" + str(students[viewKey]))
    
    "001":"sky"
    "002":"will"
    
    

    len函数

    >>> len(students)
    2

    in和not in判断关键字key是否在一个字典中

    >>> "123" in students
    False
    >>> "001" in students
    True
    >>> "002" not in students
    False

    相等性检测( == , !=)

    >>> students2 = {"1":45}
    >>> students == students2
    False
    >>> students != students2
    True
    注意:比较时不管条目在字典中的顺序。不能使用比较运算符(>, >=, <, <=)对字典进行比较,字典中的条目顺序是没有顺序的。

    5.常用的字典类dict

    Python中的字典类是dict
    keys(): tuple 返回一个关键字key序列
    values(): tuple 返回一个值value序列
    items(): tuple 返回一个元组序列,每个元组都是一个条目的(键, 值)
    clear(): None 删除所有条目
    get(key): value 返回这个关键字对应的值
    pop(key): value 删除这个关键字对应的条目并返回它的值
    popitem(): tuple 返回一个随机选择的键值对作为元组并删除这个被选择的条目
    get(key)方法除了当关键字key不在字典中返回None而不是抛出一个异常。其他都有dictionName[key]类似。pop(key)与del dictionName[key]类似
     
    例如:
    >>> students.keys()
    dict_keys(['001', '002'])
    >>> students.values()
    dict_values(['sky', 'will'])
    >>> students.items()
    dict_items([('001', 'sky'), ('002', 'will')])
    >>> students.get("001")
    'sky'
    >>> students.pop("001")
    'sky'
    >>> students
    {'002': 'will'}
    >>> students.popitem()
    ('002', 'will')
    >>> students.clear()
    >>> students;
    {}
    >>>  


     
     
  • 相关阅读:
    再次或多次格式化导致namenode的ClusterID和datanode的ClusterID之间不一致的问题解决办法
    Linux安装aria2
    POJ 3335 Rotating Scoreboard 半平面交
    hdu 1540 Tunnel Warfare 线段树 区间合并
    hdu 3397 Sequence operation 线段树 区间更新 区间合并
    hud 3308 LCIS 线段树 区间合并
    POJ 3667 Hotel 线段树 区间合并
    POJ 2528 Mayor's posters 贴海报 线段树 区间更新
    POJ 2299 Ultra-QuickSort 求逆序数 线段树或树状数组 离散化
    POJ 3468 A Simple Problem with Integers 线段树成段更新
  • 原文地址:https://www.cnblogs.com/libra-yong/p/6250270.html
Copyright © 2011-2022 走看看