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): 在序列末尾添加元素el.insert(i,e): 在下标i处添加元素el.remove(e): 删除第一个出现的元素el.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): 添加元素es.discard(e): 删除元素es.remove(e): 删除元素es.clear(): 清空容器ss.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字符串与容器的更多相关文章
- 【C++实现python字符串函数库】一:分割函数:split、rsplit
[C++实现python字符串函数库]split()与rsplit()方法 前言 本系列文章将介绍python提供的字符串函数,并尝试使用C++来实现这些函数.这些C++函数在这里做单独的分析,最后我 ...
- python字符串排序方法
一般情况下,python中对一个字符串排序相当麻烦: 一.python中的字符串类型是不允许直接改变元素的.必须先把要排序的字符串放在容器里,如list. 二.python中的list容器的sort( ...
- Python字符串排序
看了西红柿的博客,此文纯搬运,方便自己查询用. 原文:https://www.cnblogs.com/tomato0906/articles/4890701.html 1.python中的字符串类型是 ...
- python字符串的常见操作
find: 根据指定字符串获取对应的下标, 如果找不到对应的数据返回-1, 这里的-1表示没有找到数据 my_str = "hello" # find: 根据指定字符串获取对应的下 ...
- 关于python字符串连接的操作
python字符串连接的N种方式 注:本文转自http://www.cnblogs.com/dream397/p/3925436.html 这是一篇不错的文章 故转 python中有很多字符串连接方式 ...
- 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 ...
- Python 字符串
Python访问字符串中的值 Python不支持单字符类型,单字符也在Python也是作为一个字符串使用. Python访问子字符串,可以使用方括号来截取字符串,如下实例: #!/usr/bin/py ...
- python字符串方法的简单使用
学习python字符串方法的使用,对书中列举的每种方法都做一个试用,将结果记录,方便以后查询. (1) s.capitalize() ;功能:返回字符串的的副本,并将首字母大写.使用如下: >& ...
- python字符串基础知识
1.python字符串可以用"aaa",'aaa',"""aaa""这三种方式来表示 2.python中的转义字符串为" ...
随机推荐
- 锁——Java同步的基本思想
翻译人员: 铁锚 翻译时间: 2013年11月13日 原文链接: Monitors – The Basic Idea of Java synchronization 如果你上过操作系统课程,你就知道 ...
- java 判断手机号码和邮箱的正则表达式
很多场合会用到判断输入框输入的是否为手机或者邮箱,下面是这个正则表达式: Pattern patternMailBox = Pattern .compile( "^([a-zA-Z0-9 ...
- J - Oil Skimming 二分图的最大匹配
Description Thanks to a certain "green" resources company, there is a new profitable indus ...
- List of RGBD datasets
This is an incomplete list of datasets which were captured using a Kinect or similar devices. I init ...
- google breakpad for linux(2)
breakpad 是什么 breakpad 是一个包含了一系列库文件和工具的开源工具包,使用它可以帮助我们在程序崩溃后进行一系列的后续处理,如现场的保存(core dump),及事后分析(重建 cal ...
- 20164317 《网络对抗技术》Exp6 信息搜集与漏洞扫描
Exp6 信息搜集与漏洞扫描 一.原理与实践说明 (1)实践原理 信息搜集:渗透测试中首先要做的重要事项之一,搜集关于目标机器的一切信息 间接收集 DNS记录扫描和枚举 CorpWatch:auxil ...
- Web 前端 注意知识点
一. 前端使用技巧: 1. button的用法.在使用按钮时可以自由在内设置style属性,来改变形态.可以给予type=sbumit提交属性. 2. 各种使用符号: # <!--小于 大于 ...
- 多个SpringMVC项目配置统一管理(来自于springCloud的统一配置思路)
因公司项目分多个系统进行开发,而系统架构几乎完全一样,所以同样的配置文件会存在不同的系统中 当其中的某些配置需要修改时,就需要依次把所有系统中相关的配置都修改掉 纯耗时且没技术含量的体力活 所以借鉴S ...
- iOS开发手记-iOS8中使用定位服务解决方案
问题描述: 在iOS8之前,app第一次开始定位服务时,系统会弹出一个提示框来让用户选择是否允许使用定位信息.但iOS8后,app将不会出现这个弹窗.第一次运行之后,在设置->隐私->定位 ...
- Windows + VS2013 + Dlib
Dlib是一个机器学习的C++库,包含了许多机器学习常用的算法, 而且文档和例子都非常详细. 安装有点类似于opencv,这里我从官网下载dlib-18.17到D盘 1. cmake转VS工程 这里使 ...