zoukankan      html  css  js  c++  java
  • Python字符串与容器

    []运算符是Python中访问容器元素和切片的运算符

    []有正向和反向两种下标,正向下标从0开始,向后递增;

    反向下标以-1表示最后一个元素,-2表示倒数第二个字符,向前递减。

    []不仅可以访问单个元素还可以使用冒号表达式访问一段子序列(称为切片,slice)。

    切片有三种语法:seq[begin], seq[begin:end]seq[begin:end:step].

    注意冒号表达式中step写在最后而非中间,在begin为起始位置(0),end为结尾位置(-1)时可以省略:seq[:end], seq[begin:]

    采用左闭右开区间[begin,end),正反两种下标可以混用。

    in运算符用于检验元素是否包含在某个容器中,len(obj)obj.__len__()可以返回容器的长度。

    >>> s="abcd"
    >>> s[0:2:]
    'ab'
    >>> s[0::1]
    'abcd'
    >>> s[0:-1:1]
    'abc'
    

    字符串str

    Python中的字符串采用常对象表示无法修改,Python字符串默认使用Unicode编码,在str的构造函数中可以指定使用其它编码。

    字符串字面值以双引号或单引号包括,字符串中可以使用转义字符。

    str对象可以使用关系运算符进行比较或Unicode字典排序.

    可以使用[]访问字符/子串,不允许修改。

    str.format()字符串格式化功能。

    >>> "The {who} is {0} {1} old.".format(12,"years",who="boy")
    'The boy is 12 years old.'
    

    或者使用C风格的"%"占位符:

    >>> "The %s is %d %s old." % ("boy", 12, "years")
    'The boy is 12 years old.'
    

    字符串类中提供了一系列字符串操作方法.

    元组tuple

    元组是存储对象索引的线性容器,其中元素可以是不同的数据类型,元素允许访问但不允许修改。元组采用圆括号语法建立:

    >>> ("sth",1)
    ('sth', 1)
    

    字面值语法要求即使只有一个元素,其后也要加","否则会产生二义性:

    >>> (1)
    1
    >>> (1,)
    (1,)
    

    Python的tuple有一些有趣应用:

    b,a = a,b
    

    上述语句交换了a,b的值,实际上左值和右值都建立了一个临时tuple然后进行了浅复制。

    def returnMuliti():
        return 1,2
    

    上述函数实际上返回了(1,2).

    列表list

    列表是可变的存储索引的线性容器,其中元素可以是不同的数据类型,元素允许访问和修改。列表采用方括号语法建立:

    >>> c=["sth",1]
    >>> c.append("a")
    >>> c
    ['sth', 1, 'a']
    

    序列操作方法:

    • l.append(e): 在序列末尾添加元素e

    • l.insert(i,e): 在下标i处添加元素e

    • l.remove(e): 删除第一个出现的元素e

    • l.pop(i): 删除下标i处元素

    • l.pop(): 删除最后一个元素

    • l.extend(other): 合并两个list

    列表可以采用列表生成式语法创建:

    [expression for item i iterable if condition]
    

    上述语句等价于:

    temp = []
    for i in iterable:
    	if condition:
    		temp.append(expression)
    

    示例:

    >>> leaps = [y for y in range(2000,2101) if (y%4==0 and y%100!=0)or(y%400==0) ]
    >>> leaps
    [2000, 2004,...2092, 2096]
    

    集合set与固定集合frozenset

    集合是采用散列方法建立的无序容器,其中元素可以是不同的数据类型。只有可散列的元素可以包含在集合中,这些对象都要包含一个__hash__()方法。

    集合操作方法:

    • e in s: 判断元素e是否在集合s中

    • s.add(e): 添加元素e

    • s.discard(e): 删除元素e

    • s.remove(e): 删除元素e

    • s.clear(): 清空容器s

    • s.copy(): 创建s的浅拷贝(只拷贝引用)

    • s < t: 若s为t的真子集则为真,否则为假

    • s <=t: 若s为t的子集则为真,否则为假

    • s & t : 求交集

    • s | t : 求并集

    • s - t : 求差集

    • s ^ t: s|t - s&t

    集合生成式:

    {expression for item i iterable if condition}
    

    字典dict

    字典是存储键值对(关系)的集合,字典中元素的键是唯一的。可以采用下列语法创建字典:

    >>> {"username":"admin","password":123456}
    >>> dict(username="admin",password=123456)
    >>> dict([("name","admin"),("password",123456)])
    

    集合的&,|,^,-运算对字典同样适用。

    字典操作方法:

    • d[key]: 返回键key关联的值, 若不存在则抛出KeyError异常
    • d.get(key): 返回键key关联的值,若不存在则返回None.
    • d.pop(key): 删除键key关联的键值对,若不存在则抛出KeyError异常
    • d.clear(): 清空字典
    • d.update(a): 将a中未包含在d中键值对添加到d,已包含的键值对使用a中的值覆盖d中的值。 a可以是字典或者任意元素为键值对的容器。

    字典视图方法:

    • d.items(): 返回所有键值对
    • d.keys() : 返回所有的键
    • d.values(): 返回所有的值

    字典视图方法以只读容器的形式返回内容.

    字典生成式:

    {key_expression:value_expression for item i iterable if condition}
    

    字典派生出默认字典DefaultDict(可以为新键提供默认值)和有序字典OrderedDict(可以进行字典排序)两种容器,它们具有广泛的应用。

  • 相关阅读:
    Python(3)---从迭代器到异步IO
    并发访问sqlite数据库出现databse is locked的错误的一个解决办法
    基础概念2
    (已解决)Arduino mega2560 R3插在电脑上没有反应
    <Android 基础(二)> BroadcastReceiver
    unicode字符和多字节字符的相互转换接口
    PHP中XML和数组互相转换的方法
    java网络编程—TCP(1)
    Java EE的十三个技术规范
    <Android 基础(一)> Service
  • 原文地址:https://www.cnblogs.com/Finley/p/6374692.html
Copyright © 2011-2022 走看看