• python基础篇之数据类型


    Python 中有四个非常常用的数据类型,分别是字符串,列表,元组和字典。下面就来介绍这四个基本的数据类型。

    字符串

    Python 对字符串的处理是非常强的,所以掌握一些 Python 对字符串的基本操作是非常有必要的.

    字符串表示

    • 赋值

      str = 'hello'
      
    • 填字符串

      str = "%d little pigs come out or I'll %s and %s and %s" % (3, 'huff', 'puff', 'blow down')
      
    • 转换

      pi = 3.14
      print 'pi = ' + str(pi)
      

    常用方法

    • 大小写转换

      str.lower()
      str.upper()
      
    • 去除首尾空格

      str.strip()
      
    • 判断字符里所有的字符是不是字母/数字/空格

      str.isalpha()
      str.isdigit()
      str.isspace()
      
    • 判断字符串是不是以某个子串开头/结尾

      str.startswith(' ')
      str.endswith()
      
    • 查找子串在字符串中的位置,没找到返回-1

      str.find('th')
      
    • 字符串的替换

      str.replace('old','new')
      
    • 字符串的分割,返回 list

      str.split('delim')
      'delim'.join(list)
      
      

    编码问题

    在 Python2 里面默认都是用 unicode 编码的,而 windows 里面的文件默认是 gbk 编码,而 linux 里面的文件默认的是 utf8 编码,所以编码之间的转换是必不可少的.

    • 定义unicode字符串

      ustr = u'A unicode u018e string xf1'
      
    • 转换utf-8编码

      utfstr = ustr.encode('utf-8')
      
    • 转换会unicode编码

      unistr = unicode(utfstr, 'utf-8')
      

    练习题

    列表

    列表是 Python 里面一个很重要的数据结构,也是非常常用的一个数据结构.

    链表的表示

    • 初始化

      colors = ['red', 'blue', 'green']
      
    • 扩展

      # 选择链表fruits中包含字符'a',并全部转换成大写
      fruits = ['apple', 'cherry', 'bannana', 'lemon']
      # ['APPLE', 'BANNANA']
      afruits = [ s.upper() for s in fruits if 'a' in s ]
      

    list 常用方法

    • 添加元素

      list.append(elem)
      
    • 在i位置添加元素 elem

      list.insert(i,elem)
      
    • 将 list2 中的元素添加到 list 中

      list.extend(list2)
      
    • 获取元素 elem 的索引号

      list.index(elem)
      
    • 删除第一个出现的元素 elem

      list.remove(elem)
      
    • 删除第 i 个元素

      list.pop(i)
      
    • 给 list 排序

      list.sort()
      
    • 颠倒 list

      list.reverse()
      

    链表排序

    • sorted 基本方法

      a = [5, 1, 4, 3]
      print sorted(a)   ## [1, 3, 4, 5]
      print sorted(a, reverse=True)  ##[5, 4, 3, 1]
      print a           ## [5, 1, 4, 3]
      
    • sorted 按关键字排序

      • 以字符串的长度排序

        strs = ['ccc', 'aaaa', 'd', 'bb']
        print sorted(strs, key=len)  ## ['d', 'bb', 'ccc', 'aaaa'] #len代表len()这个函数
        

        其函数处理细节见下图:
        sorted-key.png

      • 以自定义关键字函数排序

        # 根据字符串最后一个字符来排序
        strs = ['xc', 'zb', 'yd' ,'wa']
        
        # 定义一个函数,输入是一个字符串,返回最后一个字符
        def MyFn(s):
            return s[-1]
        
        # 传递key=MyFn作为参数
        print sorted(strs, key=MyFn)  ## ['wa', 'zb', 'xc', 'yd']
        

    练习题

    元组

    元组就相当于数组.其元素的大小无法改变.

    元组表示

    • 赋值(用圆圆括号包含元素)

      tuple = (1, 2, 'hi')
      print len(tuple)  ## 3
      print tuple[2]    ## hi
      
    • 更改元素

      # 报错,元组元素无法更改
      tuple[2] = 'bye'
      # this works
      tuple = (1, 2, 'bye')
      

    字典

    字典表示

    • 赋值

      # 可以以{}开始构建空字典,然后以赋值的形式给字典添加键值对
      dict = {}
      dict['a'] = 'alpha'
      dict['g'] = 'gamma'
      dict['o'] = 'omega'
      
      print dict  ## {'a': 'alpha', 'o': 'omega', 'g': 'gamma'}
      
    • 查看和更改元素

      print dict['a']     # 查看'a'对应的值 'alpha'
      dict['a'] = 6       # 给'a'重新赋值
      
      if 'z' in dict: print dict['z']     # 避免报错
      print dict.get('z')  # None (instead of KeyError)
      

    字典方法

    • 获取字典关键字

      dict.keys()
      
    • 获取字典值

      dict.values()
      
    • 获取字典键值对(返回的是一个元组链表)

      dict.items()
      
    • 循环中获取键和值

      for k,v in dict.items():
          print k, '>', v
      
    • 删除元素(对 list 也适用)

      dict = {'a':1, 'b':2, 'c':3}
      del dict['b']   # 删除'b'元素
      print dict      ## {'a':1, 'c':3}
      

    字典排序

    • sorted 方法

      dict1={'A': 9, 'C': 5, 'B': 1, 'E': 14, 'D': 3, 'G': 3, 'F': 3, 'I': 9, 'H': 7, 'J': 1, 'L': 2, 'O': 8, 'N': 3, 'P': 4, 'S': 10, 'R': 5, 'U': 1, 'T': 17, 'W': 1, 'V': 1}
      
      #对字典按值排序,以元组的形式返回
      print sorted(dict1.iteritems(),key=lambda dict1:dict1[1],reverse=True)
      #对字典按键排序,以元组的形式返回
      print sorted(dict1.iteritems(),key=lambda dict1:dict1[0],reverse=False)
      

    如果该文章对您产生了帮助,或者您对技术文章感兴趣,可以关注微信公众号: 技术茶话会, 能够第一时间收到相关的技术文章,谢谢!

    技术茶话会

  • 相关阅读:
    loadNibNamed 的使用
    重写UIPageControl实现自定义按钮(转)
    乔布斯办公室语录
    学ACM算法题有用吗?
    基于文法分析的表达式计算器的实现
    我的程序员之路(5)——工作一年
    XCode实用快捷键,谁用谁知道
    LR(1)语法分析表生成
    九大定律,四大原则
    汉字为何不能用笔画编码信息论系列
  • 原文地址:https://www.cnblogs.com/happy-island/p/14333117.html
Copyright © 2020-2023  润新知