本节所讲内容:

 

 

3.3.2       分片

通过分片可以访问序列中一定范围内的元素。

语法:

序列[上边界:下边界]

>>> tag = '<ahref="http://www.python.org">Python web site</a>'

>>> tag

'<ahref="http://www.python.org">Python web site</a>'

>>> tag[32:-4]

'Python web site'

 

假如用a代表上边界,b代表下边界,x代表序列,则x[a:b]表示的真正的范围应该是

a < x ≤ b    或    a+1 ≤ x < b+1

注:只适用于正数分片

例:

>>> num =[1,2,3,4,5,6,7,8,9,10]

>>> num[3:6]

[4, 5, 6]

>>> num[7:8]

[8]

 

如果分片所得部分包括序列结尾的元素,只需空置最后一个索引即可

>>> num[-3:]

[8, 9, 10]

 

同样,如果包含开始的元素,只需空置第一个索引即可

>>> num[:3]

[1, 2, 3]

 

如果要表示整个序列,两边都进行空置即可

>>> num[:]

[1, 2, 3, 4, 5, 6, 7, 8,9, 10]

 

例:根据用户输入信息打印出用户访问的域名

 

#!/usr/bin/env python

url = raw_input("Pleaseenter the URL: ")

domain = url[11:-4]

print "Domain name:%s"  % domain

 

执行结果

[root@localhost ~]#python domain.py

Please enter the URL:http://www.baidu.com

Domain name: baidu

 

3.3.3       步长控制

分片的默认步长是1,可以手动指定为自己所需要的步长

语法

序列[上边界:下边界:步长]

>>> num[::2]

[1, 3, 5, 7, 9]

 

>>> num[3:9:3]

[4, 7]

 

步长可以为负数,此时分片从右到左提取元素

>>> num[9:3:-2]

[10, 8, 6]

 

3.3.4       序列相加

>>> [1,2,3] +[4,5,6]

[1, 2, 3, 4, 5, 6]

>>> 'hello' +'world'

'helloworld'

 

但是列表和字符串无法进行相加

>>> [1,2,2] +'rm'

Traceback (most recentcall last):

  File "<stdin>", line 1, in<module>

TypeError: can onlyconcatenate list (not "str") to list

 

3.3.5       乘法

>>> 'python' * 5

'pythonpythonpythonpythonpython'

>>>[2014,2015,2016] * 3

[2014, 2015, 2016, 2014,2015, 2016, 2014, 2015, 2016]

 

实例:以正确的宽度在居中的“盒子”内打印一个句子

[root@xuegod163 test]# vim  box.py

#!/usr/bin/python

sentence=raw_input("Sentence:")

 

screen_width = 80

text_width = len(sentence)

box_width = text_width + 20

left_margin = (screen_width -box_width) // 2

left_ident = (box_width -text_width-4) // 2

 

print

print ' ' * left_margin +'+'  + '-' * (box_width-2) +  '+'

print ' ' * left_margin + ' '* left_ident + '| ' + ' ' * text_width   + ' |'

print ' ' * left_margin + ' '* left_ident + '| ' +       sentence      + ' |'

print ' ' * left_margin + ' '* left_ident + '| ' + ' ' * text_width   + ' |'

print ' ' * left_margin +'+'  + '-' * (box_width-2) +  '+'

print

 

3.3.6       成员资格

为了检查一个值是否在序列中,可以使用in运算符

>>> provinces =['HeNan','HeBei','ShanDong','ShanXi','HuNan','HuBei','Jiangxi','Afuhan']

>>> 'AnHui' inprovinces

False

>>> 'HeNan' inprovinces

True

 

3.3.7       长度、最大值、最小值

长度:len

最大值:max

最小值:min

>>> len('What is yourname?')

18

>>> num =[100,200,300,250]

>>> len(num)

4

>>> max(num)

300

>>> min(num)

100

 

3.4          列表的基本操作

3.4.1       元素赋值

>>> x = [1,1,1]

>>> x[1] = 2

>>> x

[1, 2, 1]

 

3.4.2       删除元素

>>> provinces

['HeNan', 'HeBei', 'ShanDong','ShanXi', 'HuNan', 'HuBei', 'Jiangxi', 'Afuhan']

>>> del provinces[-1]

>>> provinces

['HeNan', 'HeBei', 'ShanDong','ShanXi', 'HuNan', 'HuBei', 'Jiangxi']

 

3.4.3       分片赋值

>>> num = [1,2,3,4,5]

>>> num[3:] = [6,7]

>>> num

[1, 2, 3, 6, 7]

 

插入新元素

>>> num[3:3] =[4,5]

>>> num

[1, 2, 3, 4, 5, 6, 7]

 

分片删除

>>> del num[1:4]

>>> num[1:4] =[]

>>> num

[1, 5, 6, 7]

 

3.4.4       列表的方法

1)追加append

>>> num =[1,2,3]

>>>num.append(4)

>>> num

[1, 2, 3, 4]

 

2)统计次数count

>>>['to','be','or','not','to','be'].count('to')

2

 

3)在列表末尾一次性追加另一个列表的多个值extend

>>> a = [1,2,3]

>>> b = [4,5,6]

>>> a.extend(b[1:3])

>>> a

[1, 2, 3, 5, 6]

 

4)显示列表中某个值第一个匹配项的索引位置index

>>> aaa =['Today','is','a','nice','day']

>>> aaa.index('nice')

3

 

5)将对象插入到列表中insert

>>> num =[1,2,3,4,5,6]

>>>num.insert(3,'four')

>>> num

[1, 2, 3, 'four', 4, 5, 6]

 

6)移除列表中的一个元素(默认是最后一个),并且返回该元素的值

>>> x = [1,2,3]

>>> x.pop()

3

 

7)移除列表中某个值的第一个匹配项remove

>>> x =  ['to','be','or','not','to','be']

>>>x.remove('be')

 

8)将列表中的元素反向存放reverse

>>> x

['to', 'or', 'not', 'to','be']

>>> x.reverse()

>>> x

['be', 'to', 'not', 'or','to']

 

9)排序sort和sorted

>>> x =[3,7,4,64,23,71,2]

>>> x.sort()

>>> x

[2, 3, 4, 7, 23, 64, 71]

 

>>> sorted(x)

[2, 3, 4, 7, 23, 64, 71]

 

两者的区别在于sort不返回生成的列表值,sorted返回列表值

 

3.5          元组

元组也列表一样,也是一种序列。唯一的不同是元组不能修改。

语法

(元素1,元素2,……,元素n)

 

空元组可以用没有包含内容的两个圆括号来表示

()

 

如果要创建包括一个值的元组,必须加上逗号

(42,)

 

加上逗号和不加逗号代表的含义完全不同

 

>>> 3*(42)

126

>>> 3*(42,)

(42, 42, 42)

 

 

补充1:

格式化字符串的使用方法:

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

2)转换标志(可选):

标志

含义

-

左对齐

+

转换值之前加上正负号

“”

空白字符

0

转换值若位数不够则用0填充

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

4)点(.)后跟精度值(可选):如果转换的是实数,精度值就表示出现在小数点后的位数。如果是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将会从元组中读出。

5)转换类型

常见类型表

转换类型

含义

d

转换10进制的数字

f

十进制浮点数

r

字符串(使用repr转换任意python对象)

s

字符串(使用str转换任意python对象)

 

例1:简单转换

>>> name = '孙悟空'

>>> print '齐天大圣%s' % name

齐天大圣孙悟空

 

例2:控制字段宽度

>>> print '%30s孙悟空' % name

                  齐天大圣孙悟空

 

例3:控制字段精度

针对数字指定小数位数

>>> from mathimport pi

>>> pi

3.141592653589793

>>> print '%.2f'% pi

3.14

针对字符确定最大宽度

>>> name = 'What is your name'

>>> print '%s' % name

What is your name

>>> print '%.10s' % name

What is yo

 

例3:使用*表示字段的宽度和精度

>>> print '%s' %name

What is your name

>>> print'%*.*s' % (20,10,name)

          What is yo

 

例4:左对齐

>>> print'%-*s%*s' % (30,'Goods',30,'Prices')

Goods                                                Prices

 

补充2:

常见字符串的方法

1)find

find 方法可以在一个较长的字符串中查找子串。它返回子串所在位置的最左端索引,如果没有找到则返回-1

>>> title ='welcome to hero alliance'

>>>title.find('hero')

11

>>>title.find('heros')

-1

 

2)lower

lower用来将字符串转换为小写格式(可以在脚本中设置忽略大小写的操作)

>>> name='SunWUKOng'

>>> name.lower()

'sunwukong'

 

3)title

title用来将字符串转换为标题,每个单词的首字母大写,其他字母小写

>>>title.title()

'Welcome To HeroAlliance'

 

title处理以下结果是达不到想要效果

>>> hero ="I'm rm"

>>> hero.title()

"I'M Rm"

 

可以使用插入string模块,使用capwords函数

>>> string.capwords(hero)

"I'm Rm"   

 

4)replace

replace对字符串进行替换,并返回替换后的结果

>>> title

'welcome to heroalliance'

>>>title.replace('alliance','kingdom')

'welcome to hero kingdom'

 

5)split

split用来将字符串分割成序列,默认以空格作为分隔符,可以手动指定

>>> title.split()

['welcome', 'to', 'hero', 'alliance']

>>> '1+2+3+4+5'.split('+')

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

 

6)strip

strip删除字符串两侧的空格(不包含内部空格),并返回结果

>>> name = raw_input("What is yourname? ").strip()

What is your name?    rm

>>> name

'rm'

 

如果希望创建一个不区分大小写,而且自动去除用户误输入的空格字符的变量,可以通过strip和lower相互结合使用

>>> name = raw_input('What is your name?').strip().lower()

What is your name?     RM

>>> name

'rm'

 

 

 

学习过程中如果问题,请留言。更多内容请加:
学神IT-linux讲师-RM老师QQ:2805537762
学神IT-戚老师QQ:3341251313
学神IT-旭斌QQ:372469347
学神IT教育RHEL7交流群:468845589

 

 

 

 

 

转载于:https://blog.51cto.com/xuegodlinux/1734387

【学神-RHEL7】P4-Python列表操作和字符串的常用方法相关推荐

  1. python 代码命令大全-Python列表操作大全(非常全)

    Python列表操作大全(非常全!!!) 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且 ...

  2. python列表第几个怎么表示-Python列表操作大全(非常全)

    Python列表操作大全(非常全!!!) 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且 ...

  3. python列表操作:追加元素到列表的代码

    将做工程过程中常用的内容做个收藏,如下的内容是关于python列表操作:追加元素到列表的内容. scores = ["1","2","3"] ...

  4. 【Python基础】零基础学习Python列表操作

    作者:来自读者投稿 整理:Lemon 出品:Python数据之道 " 「Python数据之道」导读:本文来自读者投稿,Python数据之道早些时候也发过 Python 列表相关的文章,可以前 ...

  5. python 列表操作详解,Python列表解析操作实例总结

    本文实例讲述了Python列表解析操作.分享给大家供大家参考,具体如下: 列表解析 Python 的强大特性之一是其对 list 的解析,它提供一种紧凑的方法,可以通过对 list 中的每个元素应用一 ...

  6. Python列表操作小技巧——索引、切片、增添、删除、修改和其他用法

    关于列表,需要对其说明如下三点: 列表的构造是通过英文状态下的方括号完成的,即[].可以将每一个元素存放在中括号中,而且列表中的元素是不受任何限制的,可以存放数值.字符串及其他数据结构的内容. 列表是 ...

  7. python列表操作计算列表长度并输出_Python成为专业人士笔记–List列表

    专业人士笔记"系列目录:创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com Python列表是Python程序中广泛使用的一种通用数据 ...

  8. Python列表操作详解

    目录 前言: 1.列表的创建与删除 1.1  创建有两种方式 1.2  列表特点: 2.列表的查询操作 2.1  给元素查索引 2.2  给索引查元素 2.3  获取列表中多个元素 2.4  使用循环 ...

  9. python列表操作函数大全_Python列表操作函数

    列表可以进行多个数据的存储,同时python中的列表设计非常到位,它可以实现内容动态扩充,可以进行后期数据的删除,这些就需要通过Python提供的列表操作函数来实现了. 对于Python语言而言,开发 ...

最新文章

  1. linux 任务计划 权限设置,Linux系统 文件权限+计划任务+日志系统
  2. 看完这篇 Linux 权限,通透了!
  3. mysql省市县三级互动_mysql+ajax的省市县三级联动
  4. aix 安装oracle9,IBM P570 小型机AIX5.3系统安装ORACLE9i
  5. Intellij IDEA 那些隐藏好用的小技巧
  6. 160 - 54 eKH
  7. 基于Element-plus封装配置化表单组件(组件的v-model实现)
  8. UEditor在线编辑器配置及注意事项
  9. Idea利用maven打包spring boot项目
  10. 深入了解preventDefault与stopPropagation
  11. next数组_数据结构之数组与链表
  12. java p39课后答案_面向对象程序设计(JAVA)答案
  13. oracle同音模糊查询
  14. Meshlab快捷键与菜单功能翻译
  15. verilog移位、取绝对值
  16. 首次适应算法 C语言实现
  17. Apache安全配置
  18. mysql存储函数中游标报错 No data - zero rows fetched, selected
  19. DICTATOR第三周栈与队列作业
  20. mysql jena rdf_RDF和Jena RDF API简介

热门文章

  1. java 继承 模型_java – 画布形状模型的继承与组合?
  2. mysql数据库杀掉堵塞_mysql数据库杀掉堵塞进程
  3. 电脑的发展史_新时代新征程,新华电脑教育母公司中国东方教育成功港股上市!...
  4. Python的random
  5. 基于直方图的图像增强算法(HE、CLAHE、Retinex)
  6. 全球及中国吉他霉素预混剂行业创新现状与可持续发展分析报告2022-2027年版
  7. ARGB 转换为RGB
  8. 虚拟机中安装MAC OS X教程(适用所有电脑方法,特别是cpu不支持硬件虚拟化的电脑)...
  9. 【运维技术】Zookeeper单机以及集群搭建教程
  10. mysql为datetime类型的字段设置默认值current_timestamp,引发 Invalid default value for 错误...