zoukankan      html  css  js  c++  java
  • python之字符串、列表和元组

    先简单的了解一下两个相关概念

    模块

    python中的模块需要使用特殊的命令import来导入。格式:模块.函数。如下:

    在确定自己不会导入多个同名函数的情况下,可以使用import命令的另外一种形式:from 模块 import 函数。但是此类命令总会有冲突,不建议使用。

    还可以使用变量来引用函数,比如:

    变量

    变量名只能包含字母、数字和下划线,不能以数字开头。

    变量名不能包含空格。

    不要将Python关键字和函数名用作变量名, 即不要使用Python保留用于特殊用途的单词。

    慎用小写字母l和大写字母O, 因为它们可能被人错看成数字1和0。

    注意中文字输入法下的符号与英文不同,特别是引号的使用易出错。

    列表和元组

    序列

    python中最基本的数据结构序列,而序列最常用的有:列表和元组。其它内建序列有字符串、Unicode字符串、buffer对象和xrange对象。

    列表和元组的主要区别在于,列表可以修改,元组则不能。像添加元素之类,列表会更好用,不能修改的时候,使用元组更为合适。

    所有的序列都可以进行这些操作:索引、分片(sliceing)、加、乘以及检查某个元素是否属于序列的成员(成员资格)。

    索引

    序列中所有元素都是有编号的,从0开始,使用负数会从右边开始,最后一个元素的位置是-1。可以通过索引获取元素。

    a='hello'

    a[0]

    分片

    分片操作访问一定范围内的元素,通过冒号相隔的两个索引来实现。第一个索引是提取第一个元素的编号,最后的索引是提取分片之后剩下部分的第一个元素的编号,也就是第二个索引对应的元素不包含在分片内。

    num=[1,2,3,4,5,44,7,8]

    print (num[2:5])

    [3, 4, 5]

    只要分片中最左边的索引比它右边的晚出现在序列中,结果就是一个空序列。

    num[-3:0]

    想要分片得到包括序列结尾的元素,只要置空最后一个索引即可:

    num[-3:]

    同样也会使用于序列开始的元素。

    如果复制整个序列,只要将两个索引置空。

    步长

    在普通的分片中,步长默认是1,步长设置比1大,就会跳过某些元素。负数步长(需要让开始索引大于结束索引点)从序列的尾部开始向左提取元素,直到第一个元素。

    print (num[8:3:-1])

    序列相加

    使用+即可,但列表和字符串是无法连接在一起的。

    乘法

    用数字x乘以一个序列。创建一个占用是个元素的空间,但不包括任何有内容的列表,使用[0]*10。使用None代表空值,初始化一个长度为10的列表[None]*10

    成员资格

    检查一个值知否在序列中,可以使用in运算符。条件为真返回true,假返回false。

    user = ['mdk', 'foo', 'bar']

    aa = raw_input('Enter your user name: ') in user

    print (aa)

    内建函数、len(长度),min、max

    列表

    列表可以适用序列的标准操作,如索引、分片、连接和乘法。列表是可修改的,可以使用:元素赋值、元素删除、分片赋值及列表方法。

    基本的列表操作

    list函数:可以根据字符串创建列表。因为字符串不能像列表一样被修改。

    List('hello')

    ['h', 'e', 'l', 'l', 'o']

    赋值

    使用索引标记赋值

    a = [1, 2, 3]

    a[1] = 4

    print a

    删除

    同样使用索引,使用del语句来实现

    del a[2]

    分片赋值

    分片赋值可以一次为多个元素赋值;也可以在不需要替换任何原有元素的情况下插入新的元素;利用替换一个空的分片,实现插入元素与删除元素。

    a = [1, 2, 3, 4, 5, 6, 7, 8]

    a[1:7] = []

    列表方法

    方法的调用:对象.方法(参数)

    append方法,在列表末尾追加新的对象

    count方法,统计某个元素在列表中出现的次数

    b = [[1, 2], [1, 2, 3, 4], [2, 3, 4], [1, 2], 3, 1, 1]

    b = b.count([1, 2])

    extend方法,扩展,可以在列表的末尾一次性追加另一个序列中的多个值。

    index方法,从列表中找出某个值第一个匹配项的索引位置。

    insert方法,根据索引将对象插入到列表中。

    a = [1, 2, 3, 4, 5]

    a.insert(3, 'hehe')

    [1, 2, 3, 'hehe', 4, 5]

    pop方法,会移除列表中的一个元素,默认是最后一个,并且返回该元素的值。

    a.pop(0)

    1

    模拟入栈和出栈:a.append(a.pop())

    remove方法,移除列表中某个值的第一个匹配项

    c = ['a', 'd', 'x', 'd']

    c.remove('d')

    ['a', 'x', 'd']

    reverse方法,将列表中的元素反向存放。

    sort方法,让元素能按一定的顺序排序。当用户需要一个排好的列表副本,同时又保持原有列表不变的时候,可以先把x的副本赋值给y

    x=[4,1,8,5,3,2,9]    

    y=x[:]

    y.sort()

    print y

    print x

    而要保留列表元素原来的排序顺序,同时以特定的顺序呈现它们,还可以使用函数sorted()。注意:sort()方法不能这样使用。

    高级排序

    通过compare(x,y)的形式自定义比较函数。函数会在x<y时返回负数,在x>y时返回正数,如果x=y则返回0。内建函数cmp提供了比较函数的实现方式。

    元组

    元组不能修改,使用逗号分隔值,就自动创建了元组。

    >>> 3*(30+2,)

    (32, 32, 32)

    元组大部分时候是通过圆括号括起来的。

    >>> 43,

    (43,)

    tuple函数

    以一个序列作为参数,转换为一个元组,如果参数就是元组,则返回原样。

    >>> tuple((1,2,3))

    (1, 2, 3)

    >>> tuple([1,2,3,4])

    (1, 2, 3, 4)

    元组相对列表的意义:

    1.可以在映射中当作键使用,而列表不行。

    2.作为很多内建函数和方法的返回值存在。

    字符串

    字符串介绍

    在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号。

    字符串的表示str和repr

    字符串有两种机制,一是通过str函数,它会把值转换为合理形式的字符串,而repr会创建一个字符串,以合法的python表达式的形式来表示值。

    repr(x)的功能也可以用`x`实现,比如:

    input和raw_input比较

    input会把用户输入的是合法的python表达式,若以字符串作为输入是没有问题的。raw_input函数会把所有的输入当作原始数据,然后将其放入字符串中,下面是其比较:

    长字符串、原始字符串和unicode

    若要一个长的字符串需要跨多行,可以使用三个引号代替普通引号。"""this""",在这之间可以使用单引号和双引号而不用使用转义。

    原始字符串以r字符串开头,它不会把反斜线当作特殊字符,在原始字符串中输入的每个字符都会与书写的方式保持一致。

    unicode字符串使用u前缀,与原始字符串r的使用一样。

    字符串操作

    所有的序列操作对字符串同样适用

    字符串的格式化

    字符串不可变,不能分片赋值。

     

    字符串格式化,使用格式化操作符:百分号%

    f = "hello %s, %s enough for ya?"

    v = ('world', 'hot')

    print f % v

    %s 为转换说明符,标记了需要插入转换的位置。

     

    如果右操作数是元组的话,其中每个元素都会被单独格式化,那需要有相对的转换说明符。

     

    转换参数,

    %字符:标记转换说明符的开始

    转换标志:-表示左对齐;+表示在转换值之前要加上正负号;""表示正数之前保留空格;0表示转换值若位数不够用0来补充。

    点(.)后跟精度值:转换的字符串,精度值表示最大字段宽度,如果是*,那么精度会从元组中读出。

    最小字段宽度:转换后的字符串至少应具有该值指定的宽度。如果是*,则宽度会从值元组中读出。

    转换类型:

     

     

     

     

    字符串的方法

    find():在字符串中查找子字符串,返回子串所在位置的最左端索引,没找到则返回-1。

     

    join:是split方法的逆方法,在队列中添加元素,需要添加的队列元素都必须是字符串。

     

    split:见如下便知:

     

    lower:lower方法返回字符串的小写字母。title方法会将字符串转换为标题,但可能得到并不自然的结果,用string模块的capwords函数即可。

    replace:返回字符串所有匹配项均被替换之后得到的字符串。

     

    strip:返回去两侧空格的字符串。

    tanslate:只处理单个字符,优势在于可以同时进行多个替换比replace效率高很多。

    在使用translate转换前,需要先完成一张转换表。转换表中是以某字符替换某字符的对应关系。

  • 相关阅读:
    最新免费网络加速器,游戏加速器下载_网络加速器永久免费版哪个好?
    HTML中特殊符号编码对照表,html特殊符号编码都有哪些?
    超融合架构在汽车行业前景及未来发展
    好用的前端开发小工具
    layui省市区三级联动城市选择
    企业超融合解决方案怎么做?超融合基础架构 超融合优势是什么?
    最新免费网络加速器
    什么是超融合?
    面临网络安全危机时需要思考的20个问题
    2019年超融合将飞速发展 三大趋势不容错过
  • 原文地址:https://www.cnblogs.com/whych/p/9419458.html
Copyright © 2011-2022 走看看