[]运算符是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字符串与容器的更多相关文章

  1. 【C++实现python字符串函数库】一:分割函数:split、rsplit

    [C++实现python字符串函数库]split()与rsplit()方法 前言 本系列文章将介绍python提供的字符串函数,并尝试使用C++来实现这些函数.这些C++函数在这里做单独的分析,最后我 ...

  2. python字符串排序方法

    一般情况下,python中对一个字符串排序相当麻烦: 一.python中的字符串类型是不允许直接改变元素的.必须先把要排序的字符串放在容器里,如list. 二.python中的list容器的sort( ...

  3. Python字符串排序

    看了西红柿的博客,此文纯搬运,方便自己查询用. 原文:https://www.cnblogs.com/tomato0906/articles/4890701.html 1.python中的字符串类型是 ...

  4. python字符串的常见操作

    find: 根据指定字符串获取对应的下标, 如果找不到对应的数据返回-1, 这里的-1表示没有找到数据 my_str = "hello" # find: 根据指定字符串获取对应的下 ...

  5. 关于python字符串连接的操作

    python字符串连接的N种方式 注:本文转自http://www.cnblogs.com/dream397/p/3925436.html 这是一篇不错的文章 故转 python中有很多字符串连接方式 ...

  6. StackOverFlow排错翻译 - Python字符串替换: How do I replace everything between two strings without replacing the strings?

    StackOverFlow排错翻译 - Python字符串替换: How do I replace everything between two strings without replacing t ...

  7. Python 字符串

    Python访问字符串中的值 Python不支持单字符类型,单字符也在Python也是作为一个字符串使用. Python访问子字符串,可以使用方括号来截取字符串,如下实例: #!/usr/bin/py ...

  8. python字符串方法的简单使用

    学习python字符串方法的使用,对书中列举的每种方法都做一个试用,将结果记录,方便以后查询. (1) s.capitalize() ;功能:返回字符串的的副本,并将首字母大写.使用如下: >& ...

  9. python字符串基础知识

    1.python字符串可以用"aaa",'aaa',"""aaa""这三种方式来表示 2.python中的转义字符串为" ...

随机推荐

  1. ORA-01653: 表 xxxx 无法通过 8192 (在表空间 USERS 中) 扩展

    Oracle中增加表空间大小的四种方法 1:给表空间增加数据文件 ALTER TABLESPACE app_data ADD DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\OR ...

  2. 团队博客--测试发布(队名:Running Duck)

    代码链接:Tetris 码云地址 一.Alpha版本测试报告 1.测试计划 测试内容 1.方块生成下落 2.方块左右移动 3.方块快速下滑 4.本汉字替换 5.下一个汉字提示 6.方块颜色生成 7.汉 ...

  3. datatable fix error–Invalid JSON response

    This error is pretty common. Meaning:When loading data by Ajax(ajax|option).DataTables by default, e ...

  4. Oracle EBS登陆后,直接打开某个特定Form/Page

    http://blog.csdn.net/pan_tian/article/details/8169339 有一个小技巧,Oracle EBS登陆后可以绕过职责和功能的选择过程,就可以直接打开某个特定 ...

  5. ExternalException (0x80004005): GDI+ 中发生一般性错误

    .net开发的程序用了一个自绘的框架, 平常部署到IIS上都没有问题,今天突然之间这个功能就运行不起来了. 报错:GDI+错误,然后在本地的VS里面运行是没有问题的 百度出来的改Path环境变量.注册 ...

  6. hdu 1.3.3 今年暑假不AC

    //简单.... 1 #include<iostream> #include<cstdio> #include<cstdlib> using namespace s ...

  7. IntelliJ IDEA通过maven构建ssm项目找不到mapper

    idea运行ssm项目的时候一直报错 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 原 ...

  8. 路由其实也可以很简单-------Asp.net WebAPI学习笔记(一)

    MVC也好,WebAPI也好,据我所知,有部分人是因为复杂的路由,而不想去学的.曾经见过一位程序猿,在他MVC程序中,一切皆路由,url中是完全拒绝"?"和“&”.对此,我 ...

  9. 重写TreeView,自定义图标,生成通行的下划线,取消默认获得焦点失去焦点的效果,并支持拖拽节点到外界

    1.运行效果: 2.前端代码 <UserControl x:Class="iPIS.UI.Base.Tree.VideoTreeControl" xmlns="ht ...

  10. 上下文相关的GMM-HMM声学模型

    一.上下文对音素发音的语谱轨迹的影响 受到上下文的影响,同一个音素的发音语谱轨迹不同 为提高识别准确率,对音素建模时应将这种上下文影响考虑在内 二.基于上下文相关的音素建模 注意,非单音素建模中,每个 ...