zoukankan      html  css  js  c++  java
  • 三小时快速入门Python第二篇--变量与集合

    变量与集合

    1、输入输出

     1 # Python有一个打印语句
     2 print ("I'm Python. Nice to meet you!") # => I'm Python. Nice to meet you!
     3 
     4 # 获取控制台输入的简单方法
     5 input_string_var = input("Enter some data: ") # 返回字符串类型的数据,从键盘输入的数据会以字符串的形式保存到 input_string_var
     6 input_var = input("Enter some data: ") # 返回字符串类型的数据,从键盘输入的数据会以字符串的形式保存到 input_var
     7 # 假设 input_var我们输入的是int类型的数据1234,那么我们需要进行类型转换
     8 input_var # => "1234"
     9 int(input_var) # => 1234
    10 
    11 # 不需要先声明变量再使用
    12 some_var = 5    # 通常使用小写字母与下划线命名变量
    13 some_var  # => 5
    14 
    15 # 访问一个未定义的变量会抛出一个异常
    16 # 在“控制流”里会介绍更多异常处理
    17 some_other_var  # 这里会抛出一个NameError
    18 
    19 # if 可以用来写成类似C语言的 '?:' 条件表达式
    20 "yahoo!" if 3 > 2 else 2  # => "yahoo!"

    2、列表 List

     1 # List用来存储列表
     2 li = []
     3 # 可以有初始数据
     4 other_li = [4, 5, 6]
     5 
     6 # 添加元素到列表的尾
     7 li.append(1) # [1]
     8 li.append(2) # [1,2]
     9 li.append(3) # [1,2,3]
    10 li.append(4) # [1,2,3,4]
    11 # 使用pop方法移除列表末尾的元素
    12 li.pop()        # => 3 列表现在为 [1, 2, 4]
    13 # 把3再放回去
    14 li.append(3)    # li 现在为 [1, 2, 4, 3]
    15 
    16 # 像数组一样访问一个list
    17 li[0]  # => 1
    18 # 通过下标重新定义一个元素的值
    19 li[0] = 42
    20 li[0]  # => 42
    21 li[0] = 1  # 注意:设置回原始值
    22 # 查看最后一个元素
    23 li[-1]  # => 3
    24 
    25 # 查找超过数据长度的值会抛出异常: IndexError
    26 li[4]  # 抛出 IndexError
    27 
    28 # 可以使用切片句法访问列表
    29 # 这里类型数学上的开/闭区间 左闭右开 注意下标是从0开始
    30 # 下标1-下标3[1,3)
    31 li[1:3]  # => [2, 3]
    32 # 下标2到末尾
    33 li[2:]  # => [3, 4]
    34 # 开头一直到下标3
    35 li[:3]  # => [1, 2, 3]
    36 # 开始到末尾步长为2
    37 li[::2]   # =>[1, 3]
    38 # 开始到末尾步长为-1
    39 li[::-1]   # => [4, 3, 2, 1]
    40 # 使用高级切片句法
    41 # li[start:end:step]
    42 
    43 # 使用切片进行深层拷贝
    44 li2 = li[:]  # => li2 = [1, 2, 4, 3] 但 (li2 is li) 返回 false
    45 
    46 
    47 # 使用“del”直接从列表中删除元素
    48 del li[2] #liisnow[1,2,3]
    49 
    50 # 可以直接添加一个列表
    51 li + other_li #=>[1,2,3,4,5,6]
    52 # 注: 变量li 和 other_li 值并没有变化
    53 
    54 # 使用extend()方法,把列表串起来
    55 li.extend(other_li)   # Now li is [1, 2, 3, 4, 5, 6]
    56 
    57 # 删除第一个值与参数相同的元素
    58 li.remove(2)  # li is now [1, 3, 4, 5, 6]
    59 li.remove(2)  # 抛出异常 ValueError 列表中没有2
    60 
    61 # 在指定下标插入元素
    62 li.insert(1, 2)  # li is now [1, 2, 3, 4, 5, 6] again
    63 
    64 # 获得第一个匹配的元素的下标
    65 li.index(2)  # => 1
    66 li.index(7)  # 抛出异常 ValueError 列表中没有7
    67 
    68 # 使用“in”来检查列表中是否包含元素
    69 1 in li #=>True
    70 # 使用“len()”来检查列表的长度
    71 len(li)   # => 6

    3、元组 Tuple

     1 # 元组(Tuple)与列表类似但不可修改
     2 tup = (1, 2, 3)
     3 tup[0]   # => 1
     4 tup[0] = 3  # 抛出异常 TypeError
     5 
     6 # 注意:如果一个元组里只有一个元素,则需要在元素之后加一个逗号;如果元组里没有元素,反而不用加逗号
     7 type((1))   # => <class 'int'>
     8 type((1,))  # => <class 'tuple'>
     9 type(())    # => <class 'tuple'>
    10 
    11 # 以下对列表的操作,也可以用在元组上
    12 len(tup) # => 3
    13 tup + (4,5,6) #=>(1,2,3,4,5,6)
    14 tup[:2] #=>(1,2)
    15 2 in tup #=>True
    16 
    17 # 可以把元组的值分解到多个变量上
    18 a,b,c= (1, 2, 3) #a is now 1,b  is now 2 and c is now 3
    19 d,e,f= 4,5,6 # 也可以不带括号
    20 # 如果不带括号,元组会默认带上
    21 g = 4, 5, 6 #=>(4,5,6)
    22 # 非常容易实现交换两个变量的值
    23 e, d = d, e # d is now 5 and e is now 4

    4、字典 Dictionaries

     1 # 字典用来存储(键-值)映射关系 有点类似于其他语言里面的map
     2 empty_dict = {}
     3 # 这里有个带初始值的字典
     4 filled_dict = {"one": 1, "two": 2, "three": 3}
     5 
     6 # 注意:字典 key 必须是不可以修改类型,以确保键值可以被哈希后进行快速检索
     7 # 不可修改的类型包括:int, float, string, tuple
     8 invalid_dict = {[1,2,3]: "123"}  # => Raises a TypeError: unhashable type: 'list'
     9 valid_dict = {(1,2,3):[1,2,3]}   # 值可以是任意类型
    10 
    11 # 使用[]查找一个元素
    12 filled_dict["one"]   # => 1
    13 # 使用"keys()"获得所有的“键”
    14 filled_dict.keys()   # => ["three", "two", "one"]
    15 # 注:字典的key是无序的,结果可以不匹配
    16 # 使用"values()"获得所有的“值”
    17 filled_dict.values()   # => [3, 2, 1]
    18 # 注:同样,这是无序的
    19 
    20 # 查询字条中是否存在某个”键“用 "in"
    21 "one" in filled_dict   # => True
    22 1 in filled_dict   # => False
    23 
    24 # 查找一个不存在的key会抛出异常 KeyError
    25 filled_dict["four"]   # KeyError
    26 
    27 # 使用 "get()" 会避免抛出异常 KeyError
    28 filled_dict.get("one") # => 1
    29 filled_dict.get("four") # => None
    30 
    31 # get方法支持默认参数,当key不存在时返回该默认参数
    32 filled_dict.get("one", 4) #=>1
    33 filled_dict.get("four", 4)   # => 4
    34 
    35 # 注 filled_dict.get("four") 仍然返回 None
    36 # (get不会把值插入字典中)
    37 # 向字典中插入值的方式与list相同
    38 filled_dict["four"] = 4  # now, filled_dict["four"] => 4
    39 
    40 # "setdefault()" 只有首次插入时才会生效
    41 filled_dict.setdefault("five", 5)  # filled_dict["five"] is set to 5
    42 filled_dict.setdefault("five", 6)  # filled_dict["five"] is still 5
    43 
    44 # 使用 del 从字典中删除一个键
    45 del filled_dict["one"]  # Removes the key "one" from filled dict
    46 
    47 # 从 Python 3.5 开始,可以使用**操作
    48 {'a': 1, **{'b': 2}}  # => {'a': 1, 'b': 2}
    49 {'a': 1, **{'a': 2}}  # => {'a': 2}

    5、集合 Set

     1 # Set与list类似,但不存储重复的元素
     2 empty_set = set()
     3 some_set = set([1, 2, 2, 3, 4])   # some_set is now  set([1, 2, 3, 4])
     4 
     5 # 与字典类型一样,Set 里的元素也必须是不可修改的
     6 invalid_set = {[1], 1}  # => Raises a TypeError: unhashable type: 'list'
     7 valid_set = {(1,), 1}
     8 
     9 # Set也是无序的,尽管有时看上去像有序的
    10 another_set = set([4, 3, 2, 2, 1])  # another_set is now set([1, 2, 3, 4])
    11 
    12 # 从Python 2.7开始, {}可以用来声明一个Set
    13 filled_set={1,2,2,3,4} #=>{1,2,3,4}
    14 # Can set new variables to a set
    15 filled_set = some_set
    16 # 向Set中添加元素
    17 filled_set.add(5)   # filled_set is now {1, 2, 3, 4, 5}
    18 # 用 & 求 Set的交集
    19 other_set = {3, 4, 5, 6}
    20 filled_set & other_set # =>{3,4,5}
    21 # 用 | 求 Set的合集
    22 filled_set | other_set # =>{1,2,3,4,5,6}
    23 # 用 - 前面的元素减去后面的元素
    24 {1,2,3,4} - {2,3,5} # => {1,4}
    25 # 用 ^ 求Set的差集 
    26 {1,2,3,4}^{2,3,5} #=>{1,4,5}
    27 # 检查右边是否是左边的子集
    28 {1, 2} >= {1, 2, 3} # => False
    29 # 检查左边是否是右边的子集
    30 {1, 2} <= {1, 2, 3} # => True
    31 # 检查元素是否在集合中
    32 2 in filled_set   # => True
    33 10 in filled_set   # => False

     上一篇:三小时快速入门Python第一篇--原始数据类型与操作

     下一篇:三小时快速入门Python第三篇--控制流分支与循环

  • 相关阅读:
    巧用数据流让 Word 文档在线阅读
    《开源公开课分享》:Java开源框架案例分享
    存储过程
    opencv求取RGB分量
    opencv中的矩阵操作
    三维高斯模型 opencv实现
    线性均值滤波和中值滤波的比较
    opencv 画延长线
    MATLAB曲线绘制
    如何在博客园发博客时插入优酷视频
  • 原文地址:https://www.cnblogs.com/xwxz/p/13356254.html
Copyright © 2011-2022 走看看