zoukankan      html  css  js  c++  java
  • python D2

    python D2

    1. 列表、元组操作
    2. 字符串操作
    3. 字典操作
    4. 集合操作
    5. 文件操作
    6. 字符编码与转码 

    1 列表、元组操作

    定义列表,访问元素

    切片:获取多个元素

    追加

    修改

    删除

    In [1]: l = [1,3,5,6]
    
    In [2]: l[0]
    Out[2]: 1
    
    In [3]: l[1]
    Out[3]: 3
    
    In [4]: l[0:1]
    Out[4]: [1]
    
    In [5]: l[0:-1]
    Out[5]: [1, 3, 5]
    
    In [6]: l.extend([4,5,7])
    
    In [7]: l
    Out[7]: [1, 3, 5, 6, 4, 5, 7]
    
    In [8]: l[0] = 100
    
    In [9]: l[0]
    Out[9]: 100
    
    In [10]: del l[0]
    
    In [11]: del l
    
    In [12]: l
    ---------------------------------------------------------------------------
    NameError                                 Traceback (most recent call last)
    <ipython-input-12-12f54a96f644> in <module>()
    ----> 1 l
    
    NameError: name 'l' is not defined
    

      

    扩展

    拷贝

    统计

    排序&翻转

    获取下标

    In [33]: names = ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
    
    In [34]: names.sort()
    
    In [35]: names
    Out[35]: [1, 2, 3, 'Alex', 'Amy', 'Rain', 'Tenglan', 'Tom']
    
    In [36]: names.re
    names.remove   names.reverse  
    
    In [36]: names.reverse()
    
    In [37]: names
    Out[37]: ['Tom', 'Tenglan', 'Rain', 'Amy', 'Alex', 3, 2, 1]
    
    In [38]: names.count(1)
    Out[38]: 1
    
    In [40]: names.index(1)
    Out[40]: 7
    
    In [41]: names
    Out[41]: ['Tom', 'Tenglan', 'Rain', 'Amy', 'Alex', 3, 2, 1]
    

      

    元组

    元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

    它只有2个方法,一个是count,一个是index,完毕。

    In [1]: a = ('星期一' , '星期二')
    
    In [2]: a.index('星期一')
    Out[2]: 0
    
    In [3]: a.count('星期一')
    Out[3]: 1
    

      

    2、字符串操作

    特性:不可修改 

    name.capitalize()  首字母大写
    name.casefold()   大写全部变小写
    name.center(50,"-")  输出 '---------------------Alex Li----------------------'
    name.count('lex') 统计 lex出现次数
    name.encode()  将字符串编码成bytes格式
    name.endswith("Li")  判断字符串是否以 Li结尾
     "Alex	Li".expandtabs(10) 输出'Alex      Li', 将	转换成多长的空格 
     name.find('A')  查找A,找到返回其索引, 找不到返回-1 
    
    format :
        >>> msg = "my name is {}, and age is {}"
        >>> msg.format("alex",22)
        'my name is alex, and age is 22'
        >>> msg = "my name is {1}, and age is {0}"
        >>> msg.format("alex",22)
        'my name is 22, and age is alex'
        >>> msg = "my name is {name}, and age is {age}"
        >>> msg.format(age=22,name="ale")
        'my name is ale, and age is 22'
    format_map
        >>> msg.format_map({'name':'alex','age':22})
        'my name is alex, and age is 22'
    
    
    msg.index('a')  返回a所在字符串的索引
    '9aA'.isalnum()   True
    
    '9'.isdigit() 是否整数
    name.isnumeric  
    name.isprintable
    name.isspace
    name.istitle
    name.isupper
     "|".join(['alex','jack','rain'])
    'alex|jack|rain'
    
    
    maketrans
        >>> intab = "aeiou"  #This is the string having actual characters. 
        >>> outtab = "12345" #This is the string having corresponding mapping character
        >>> trantab = str.maketrans(intab, outtab)
        >>> 
        >>> str = "this is string example....wow!!!"
        >>> str.translate(trantab)
        'th3s 3s str3ng 2x1mpl2....w4w!!!'
    
     msg.partition('is')   输出 ('my name ', 'is', ' {name}, and age is {age}') 
    
     >>> "alex li, chinese name is lijie".replace("li","LI",1)
         'alex LI, chinese name is lijie'
    
     msg.swapcase 大小写互换
    
    
     >>> msg.zfill(40)
    '00000my name is {name}, and age is {age}'
    
    
    
    >>> n4.ljust(40,"-")
    'Hello 2orld-----------------------------'
    >>> n4.rjust(40,"-")
    '-----------------------------Hello 2orld'
    
    
    >>> b="ddefdsdff_哈哈" 
    >>> b.isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则
    True
    

      

    3、字典操作

    字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

    字典的特性:

    • dict是无序的
    • key必须是唯一的,so 天生去重

    添加

    修改

    删除

    查找

    In [1]: d={"name":"a","age":12,}
    
    In [2]: d2 = dict(name="a" , age=12)
    
    In [3]: d3 = dict(zip(['name','age'],["a",12]))
    
    In [4]: d
    Out[4]: {'age': 12, 'name': 'a'}
    
    In [5]: d2
    Out[5]: {'age': 12, 'name': 'a'}
    
    In [6]: d3
    Out[6]: {'age': 12, 'name': 'a'}
    
    In [7]: d["sex"] = "男"
    
    In [8]: d
    Out[8]: {'age': 12, 'name': 'a', 'sex': 'xe7x94xb7'}
    
    In [9]: d["sex"] = "女"
    
    In [10]: del d["sex"]
    
    In [11]: d
    Out[11]: {'age': 12, 'name': 'a'}
    
    In [12]: del d
    
    In [13]: d
    ---------------------------------------------------------------------------
    NameError                                 Traceback (most recent call last)
    <ipython-input-13-e29311f6f1bf> in <module>()
    ----> 1 d
    
    NameError: name 'd' is not defined
    
    In [14]: "name" in d2
    Out[14]: True
    

      

    多级字典嵌套及操作

    循环dict

    In [16]: d2
    Out[16]: {'age': 12, 'name': 'a'}
    
    In [17]: for k , v in d2.items():
       ....:     print(k,v)
       ....:     
    ('age', 12)
    ('name', 'a')
    
    In [18]: 
    
    In [18]: d2.keys()
    Out[18]: ['age', 'name']
    
    In [19]: d2.values()
    Out[19]: [12, 'a']
    
    In [20]: type(d2.values())
    Out[20]: list

    4、集合操作

    集合是一个无序的,不重复的数据组合,它的主要作用如下:

    • 去重,把一个列表变成集合,就自动去重了
    • 关系测试,测试两组数据之前的交集、差集、并集等关系

    常用操作

    s = set([3,5,9,10])      #创建一个数值集合  
      
    t = set("Hello")         #创建一个唯一字符的集合  
    
    
    a = t | s          # t 和 s的并集  
      
    b = t & s          # t 和 s的交集  
      
    c = t – s          # 求差集(项在t中,但不在s中)  
      
    d = t ^ s          # 对称差集(项在t或s中,但不会同时出现在二者中)  
      
       
      
    基本操作:  
      
    t.add('x')            # 添加一项  
      
    s.update([10,37,42])  # 在s中添加多项  
      
       
      
    使用remove()可以删除一项:  
      
    t.remove('H')  
      
      
    len(s)  
    set 的长度  
      
    x in s  
    测试 x 是否是 s 的成员  
      
    x not in s  
    测试 x 是否不是 s 的成员  
      
    s.issubset(t)  
    s <= t  
    测试是否 s 中的每一个元素都在 t 中  
      
    s.issuperset(t)  
    s >= t  
    测试是否 t 中的每一个元素都在 s 中  
      
    s.union(t)  
    s | t  
    返回一个新的 set 包含 s 和 t 中的每一个元素  
      
    s.intersection(t)  
    s & t  
    返回一个新的 set 包含 s 和 t 中的公共元素  
      
    s.difference(t)  
    s - t  
    返回一个新的 set 包含 s 中有但是 t 中没有的元素  
      
    s.symmetric_difference(t)  
    s ^ t  
    返回一个新的 set 包含 s 和 t 中不重复的元素  
      
    s.copy()  
    返回 set “s”的一个浅复制
    

      

    5、文件操作

    对文件操作流程

    1. 打开文件,得到文件句柄并赋值给一个变量
    2. 通过句柄对文件进行操作
    3. 关闭文件 

    打开文件的模式有:

    • r,只读模式(默认)。
    • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
    • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

    "+" 表示可以同时读写某个文件

    • r+,可读写文件。【可读;可写;可追加】
    • w+,写读
    • a+,同a

    "U"表示在读取时,可以将 自动转换成 (与 r 或 r+ 模式同使用)

    • rU
    • r+U

    "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

    • rb
    • wb
    • ab

    with语句

    为了避免打开文件后忘记关闭,可以通过管理上下文,即:

    In [24]: with open('test.txt' , 'w+') as f:
                 f.write("aaa")
    
    In [28]: with open('test.txt' , 'r') as f:
                 print(f.read())
    

      

    6. 字符编码与转码

    详细文章:

    http://www.cnblogs.com/yuanchenqi/articles/5956943.html

    http://www.diveintopython3.net/strings.html


    1.在python2默认编码是ASCII, python3里默认是unicode

    2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间

    3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string

     

    >>> import sys
    >>> print(sys.getdefaultencoding())
    utf-8
    >>> a = "啦啦"
    >>> a
    '啦啦'
    >>> print(a.encode('gb2312'))
    b'xc0xb2xc0xb2'
    >>> print(a.encode('gb2312').decode('gb2312'))
    啦啦
    

      

  • 相关阅读:
    poj1275收银员——差分约束
    poj3565Ants——KM算法
    bzoj2750Road——最短路计数
    poj1236学校网络——连通块
    poj2226Muddy Fields——二分图匹配
    Pots
    蜘蛛牌
    Find The Multiple (水题)
    Dungeon Master (三维bfs)
    棋盘问题 (简单搜索)
  • 原文地址:https://www.cnblogs.com/zsr0401/p/6544097.html
Copyright © 2011-2022 走看看