Python核心编程之序列

《Python核心编程》第6章 序列:字符串、列表和元组 练习 6–1. 字符串. string 模块中是否有一种字符串方法或者函数可以帮我鉴定一下一个字符串是否是另一个大字符串的一部分? # coding=utf-8 __author__ = 'Ibuki Suika' if __name__ == '__main__': s1 = raw_input('input a string: ') s2 = raw_input('inpu 阅读详情
1、序列类型
序列类型:成员有序排列,并且可以通过下标偏移量访问到它的一个或者几个成员。
序列包括:字符串(普通字符串和unicode字符串),列表,元组。

2、序列类型转换工厂函数
函数                  含义 
list(iter)       把可迭代对象转换为列表 
str(obj)         把 obj 对象转换成字符串(对象的字符串表示法) 
unicode(obj)     把对象转换成 Unicode 字符串(使用默认编码) 
basestring()     抽象工厂函数,其作用仅仅是为 str 和 unicode 函数提供父类,所以不能被
                 实例化,也不能被调用 
tuple(iter)      把一个可迭代对象转换成一个元组对象 

3、浅拷贝和深拷贝
    一旦一个python对象被建立,就不能更改其身份或类型了。若把一个列表对象传给list()函数,便会创建这个对象的一个浅拷贝,然后将其插入新的列表中。浅拷贝只拷贝了对对象的索引,而不是重新建立了一个对象!若想完全的拷贝一个对象(包括递归,如果你的对象是一个包含在容器中的容器),需要进行深拷贝。
    非容器类型(数字,字符串和其他原子类型的对象等)没有被拷贝一说,浅拷贝是用完全切片操作来完成的;如果元组变量只包含原子类型对象,对它的深拷贝将不会进行。
    浅拷贝和深拷贝都可以在copy模块中找到。copy()进行浅拷贝操作,deepcopy()进行深拷贝操作。

4、序列类型可用的内建函数
       函数名                       功能
enumerate(iter)            接受一个可迭代对象作为参数,返回一个enumerate对象(同时也是一个迭
                            代器),该对象生成由iter每个元素的index值和item值组成的元组。
len(seq)                     返回seq的长度
max(iter,key=None) or        返回iter或(arg0,arg1,...)中的最大值,如果指定了key,这个key必须
max(arg0,arg1...,key=None) 是一个可以传给sort()方法的,用于比较的回调函数。
min(iter,key=None) or       返回iter或(arg0,arg1,...)中的最小值,如果指定了key,这个key必须
min(arg0,arg1...,key=None) 是一个可以传给sort()方法的,用于比较的回调函数。
reversed(seq)                接受一个序列作为参数,返回一个以逆序访问的迭代器
sort(iter,fun=None,key=None,
reverse=False)               接受一个可迭代对象作为参数,返回一个有序的列表。
sum(seq,init=0)               返回seq和可选参数init的总和
zip([it0,it1,...itN])        返回一个列表,每个元素为一个元组,元组元素个数为N+1

5、字符串
python中,不区分""和''.
字符串是不可变类型,改变一个字符串的元素需要新建一个新的字符串。由独立的字符组成,这些字符可以通过切片操作顺序访问。
in,not in——只允许用来判断一个单个字符是否属于一个字符串
示例程序一:测试in & not in
>>> 'z' not in 'abc'
True
>>> 'a' in 'abc'
True
>>>

示例程序二:测试string
>>> import string
>>> string.ascii_uppercase     # display the upper alphas
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.ascii_lowercase     # display the lower alphas
'abcdefghijklmnopqrstuvwxyz'
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'   # display all the alphas
>>> string.digits              # display the digits 
'0123456789'
>>> string.upper('abd')        # change the lower alphas to upper
'ABD'
>>> string.lower('AGH')        # change the upper alphas to lower
'agh'
>>> 'abc' + 'lala'             # connect the two strings
'abclala'
>>> '%s %s' %('aaa', 'bbb')    # the other way to connect the two strings
'aaa bbb'
>>> s = ' '.join(('haha', 'heihei', 'hehe'))
>>> s
'haha heihei hehe'
>>>
说明:现在不必导入string模块了。建议不要用string模块。因为python必须为每一个参加连接操作的字符串分配新的内存,包括新产生的字符串。取而代之,使用(%s),然后用一个join()方法把他们连接在一起。


示例程序三:标识符检查(idcheck.py)
import string
 
alphas = string.letters + '_'
nums = string.digits

print 'Welcome to the Identifier Checker v1.0'
print 'Testees must be at least 2 chars long.'
myInput = raw_input('Identifier to test? ')

if len(myInput) > 1:
  if myInput[0] not in alphas:
    print '''invalid: first symbol must be
    alphabetid'''
  else:
    for otherChar in myInput[1:]:
      if otherChar not in alphas + nums:
        print '''invalid: remaining
        symbols must be alphanumeric'''
        break
      else:
        print 'okey as an identifier'
        break

注:上述程序可以简化。未考虑标识符长度大于1。未考虑Python关键字。

字符串模板
字符串Template对象有两个方法,substitute()和safe_substitute().前者更为严谨,在key缺少的情况下会报一个KeyError的异常出来,后者在缺少key时,直接原封不动的把字符串显示出来。
示例程序四:测试字符串模板
>>> from string import Template
>>> s = Template('There are ${howmany} ${lang} Quotation Symbols')
>>>
>>> print s.substitute(lang='Python',howmany=3)
There are 3 Python Quotation Symbols
>>>

原始字符串(r/R)
原始字符串目的是对付在字符串中出现的特殊字符,按照字面意思来使用。
示例程序五:测试原始字符串
>>> '\n'          # 打印‘\n’
'\n'
>>> print '\n'    # 打印一个换行


>>> r'\n'         # 打印添加转义字符后的字符串
'\\n'
>>> print r'\n'   # 打印原始字符串
\n
>>>

Unicode字符串(u/U)
用来把标准字符串或者包含Unicode字符的字符串转换成完全地Unicode字符串对象。
示例程序六:测试Unicode字符串

6、内建函数
cmp(str1,str2)      —— 比较字符串大小
len(str)            —— 返回字符串的长度
max(str)  min(str)  —— 返回最大或最小的字符
enumerate(str)      —— 字符串列表形式显示
zip(str1,str2)      —— 字符串一和字符串二构成列表
示例程序六:
>>> s = 'abc'                   # enumerate
>>> for i, t in enumerate(s):
...     print i, t
...
0 a
1 b
2 c
>>> s, t = 'abc', '123'         # zip
>>> zip(s, t)
[('a', '1'), ('b', '2'), ('c', '3')]
>>>

7、字符串内建函数
示例程序七:字符串内建函数
>>> quest = 'what is your favorite color?'
>>> quest.capitalize()           # 首字母大写
'What is your favorite color?'
>>> quest.center(40)             # 居中显示,空格填充至长度40的新字符串
'      what is your favorite color?      '
>>> quest.count('or')            # 返回or在字符串中出现次数
2
>>> quest.endswith('blue')       # 判断字符串是否以blue结束
False
>>> quest.endswith('color?')
True
>>> quest.find('or', 30)         # 检测or是否在字符串中,起始为0,终止为30,是返回位置,否则-1
-1
>>> quest.find('or', 22)         
25
>>> quest.index('or', 10)        # 检测or是否在字符串中,起始为0,终止为10
16
>>>

8、列表
列表是能保留任意数目的python对象的灵活的容器。可以包含不同类型的对象。列表是可变类型。
内建函数之cmp()比较算法:
1)对两个列表的元素进行比较
2)如果比较的元素是同类型的,则比较其值,返回结果
3)如果两个元素不是同一种类型,则检查他们是否是数字
  a)如果是数字,执行必要的数字强制类型转换,然后比较
  b)如果有一方的元素是数字,则另一方的元素“大”(数字是最小的)
  c)否则,通过类型名字的字母顺序进行比较
4)如果有一个列表首先到达末尾,则另一个长一点的列表“大”
5)如果我们用尽了两个列表的元素而且所有元素都是相等的,那么结果就是个平局,返回一个0.

内建函数:
len()
max() min()
sorted() reversed()  —— 正向排序和逆向排序
enumerate()  zip()
sum()
list()  tuple()

列表类型内建函数:
list.append(obj)    ——向列表中添加一个对象obj
list.count(obj)—— 返回一个obj在列表中出现次数
list.extend(seq)—— 把序列seq的内容添加到列表中
list.index(obj, i=0, j=len(list))—— 返回list[k] == obj 的k值,并且k的范围在i<=k<j,否则异常
list.insert(index, obj)——在索引量为index的位置插入obj
list.pop(index=-1)—— 删除并返回指定位置的对象,默认是最后一个对象
list.remove(obj)—— 从列表中删除obj
list.reverse()—— 原地翻转列表
list.sort(func=None,key=None,reverse=False) —— 以指定方式排列列表中成员。

9、元组
元组是不可变类型,但可以通过list()函数将不可变的元组转换为可变的列表。
没有明确用符号定义的都是元组。
只有一个元素的元组需要再元组分隔符里面加一个逗号。
>>> onlytuple=('only',)
>>> print onlytuple
('only',)
>>>
圆括号经常被重载。由圆括号包裹的一个单一元素首先被作为分组操作,而不是作为元组的分界符。变通的方法就是如上所示,在第一个元素后面添加一个逗号,来表明这是一个元组而不是在做分组操作。


SRC:http://blog.sina.com.cn/s/blog_76e94d210100wbi9.html
Python核心编程之序列上篇 Unicode 是计算机可以支持这个星球上多种语言的秘密武器.在 Unicode 之前,用的都是 ASCII,ASCII 码非常简单,每个英文字符都是以七位二进制数的方式存贮在计算机内,其范围 是 32 到 126.当用户在文件中键入一个大写字符 A 时,计算机会把 A 的 ASCII 码值 65写入磁盘,然后当计算机读取该文件时,它会首先把 65 转化成字符 A 然后显示到屏幕上.ASCII 编码的文件小巧易读。 阅读详情

相关推荐

Python核心编程之序列下篇

难道它们 的名字现在不应该都是'jane'了吗?正如我们在本章的开头所讨论的,无论 list()还是 tuple()都不可能做完全的转换(见 6.1.2 节).也就是说,你传给 tuple()的一个列表对象不可能变成一个元组,而你传给 list()的 对象也不可能真正的变成一个列表.虽然前后两个对象(原来的和新的对象)有着相同的数据集 合(所以相等 == ),但是变量指向的却不是同一个对象了(所以执行 is 操作会返回 false).还 要注意,即使它们的所有的值都相同,一个列表也不可能"等于"一个元组.

1、测试博主技术知识分享 2、pos行业知识技术分享 3、java后端技术知识分享 4、嵌入式技术知识分享 5、运维部署相关知识分享 1482

python230(可变类型和不可变类型02—列表、字典的修改和赋值)

注意 1.可变类型的数据变化,是通过方法来实现的 2.如果给一个可变类型的变量,赋值了一个新的数据,引用会修改 变量不再对之前的数据引用 变量改为对新赋值的数据引用 ...

weixin_42681308的博客 617

KALI虚拟机挂代理教程

需要你本地挂了代理,然后通过虚拟机连接本机代理端口,不说废话了,直接说怎么做了。 1.查看选项设置中自己的小飞机的本地端口是多少:(默认是1080) 2.本机win+r打开cmd,输入ipconfig查看本地ip,我的本地ip是192.168.0.107: 2.打开kali虚拟机,编辑ProxyChains配置文件: vi /etc/proxychains.conf 3.在文件末尾的ProxyList中添加物理机本地ip和1080端口作为代理地址: 4.保存并退出即可: esc :wq 回车 5.

qq_34853514的博客 3万+

【Python入门与进阶】 序列- 列表 可变序列修改

【原文】【Python入门与进阶】 序列- 列表 可变序列修改 0:导语 》》a:列表中的元素修改 可以一次一个(索引),也可以一次一批(切片) 》》b:不是可变序列,不能进行修改 》》c:切片要熟悉 1:修改列表中的元素 》》1:通过索引修改元素 如图: 新值通过等号赋值给索引对应的位置 》》2:通过del来删除元素 图上: del 为删除操作 被删除的元素 用 索引 来指定,删除后...

翁老师的教学团队 715

ROS2仿真抓取分拣案例,使用myCobot 280机械臂结合ROS2系统搭建机械分拣站

本案例展示了如何利用myCobot 280 urdf模型构建一个对象分类站,并在ROS2 jazzy中完成运动规划。

m0_71627844的博客 2125

GCC调试黑科技:-fomit-frame-pointer优化下如何保证栈回溯能力

本文深入探讨了GCC编译器在启用`-fomit-frame-pointer`优化选项时如何保证栈回溯能力。通过分析`.eh_frame`段的结构与DWARF调试信息,提供了从编译选项配置到实战调试的完整解决方案,帮助开发者在性能优化与调试能力之间找到最佳平衡点。

u6v7w8x的博客 904

Python的常用类型与注释

数值 Python的常用数值类型有整型“int”, 浮点型“float”,此外Python还支持诸如复数等其他数值类型。 常见的“+”, “-”, “* ”, “/”,  "%"等操作符,在Python也都被支持。 >>> 2 + 2 4 >>> 50 - 5*6 20 >>> (50 - 5*6) / 4 5.0 >...

扶摇升的IT博客 496

深入浅出:用状态机搞定FPGA MIG控制器与DDR3的读写时序(附Verilog源码分析)

本文深入解析了如何利用状态机精准控制FPGA MIG控制器与DDR3的读写时序,涵盖Verilog源码实现、关键时序控制点及实战优化技巧。通过状态机设计、跨时钟域处理和带宽优化等方法,有效提升DDR3访问效率,适用于高性能计算和AI加速器等场景。

weixin_26899659的博客 408

python list是不可变的数据类型吗_python中不可变数据类型和可变数据类型

1.名词解释以下所有的内容都是基于内存地址来说的。不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变2.数据类型分类在pyt...

weixin_42319436的博客 7820

32GB Jetson Orin SOM 不能刷机问题排查

拿到了一个新的Orin SOM,当用orin Devkit CVB或定制的CVB不能用Linux_For_Tegra刷机,flash日志(JetPack5.0DP和5.0.1DP都失败了) 2. 确认mb2配置中将CVB的eeprom读取大小设置是否为0 ? 已经确认是正常的 在定制的orin cvb flash上使用Orin devkit som,启动是成功的。但新得到的Orin som并不工作可以排除理由:使用Orin Devkit CVB和Orin SOM(不是Devkit SOM)仍然不能

jzwjzw19900922的博客 1499

6、基因组数据可视化与甲基化分析:从基础操作到深入洞察

本文详细介绍了基因组数据可视化和全基因组DNA甲基化分析的方法和技术,包括基因组查看器(IGV)的基本操作、单核苷酸变异的可视化、DNA甲基化与CpG岛的关联分析、统计建模与显著甲基化区域识别,以及不同细胞系之间的甲基化模式差异分析。通过具体案例展示了如何利用MATLAB进行数据分析和可视化,为基因组研究、疾病机制探索及个性化医疗提供了技术支撑和实践参考。

qsc901234的博客 295

python集合类型及操作

目录集合类型的定义集合操作符4个增强符集合处理方法 集合类型的定义 集合是多个元素的无序组合,每个元素唯一,不存在相同元素,集合元素不可更改。 集合用大括号 {} 表示,元素间用逗号分隔,建立集合类型用 {} 或 set(),建立空集合类型,必须使用set()。 定义实例: 集合操作符 操作符及应用 描述 S | T 并 返回一个新集合,包括在集合S和T中的所有元素 S - ...

whoim_i的博客 1066

【AUTOSAR OS】调度表管理模块深度解析

本文深入解析AUTOSAR OS调度表的实现机制。调度表通过预定义到期点序列控制任务激活时序,支持周期性执行、多核协同和容错处理。核心数据结构包括调度表控制块(STCB)、配置结构和到期点动作。关键函数涵盖初始化、启动、到期点处理及链表管理,采用O(n)时间复杂度。以发动机控制为例展示配置与使用方式,并探讨显式同步、时间容错等高级特性。最后提出EP数量控制、链表优化等性能建议,为汽车ECU时间触发系统开发提供参考。

1605

python读取序列5之后的数据_Python核心编程读笔 5: python的序列

第六章 序列:字符串、列表、元组一、序列(1)序列类型操作符seq[ind] 获得下标为 ind 的元素seq[ind1:ind2] 切片操作seq * expr   序列重复 expr 次seq1 + seq2   连接序列obj in seq   判断 obj 元素是否包含在 seq 中obj not in seq   判断 obj 元素是否不包含在 seq 中(2)内建函数类型转换(工厂)函...

weixin_39996478的博客 403

如何在 Mac 上下载安装 Xcode——并为 iOS 开发更新它原文

下载 Xcode安装命令行工具打开新版本删除文件注意,我在下面的步骤中列出了一些终端命令。这些命令可以被输入到你现在的工作目录中。这意味着你不需要导航到任何特定的文件夹。如果你真的想这样做,你可以在输入下面的步骤中的命令之前先输入== cd==。这将使你返回到主文件夹。

专注于AI领域前沿知识,业余爱好开发软件 4666

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

python核心编程6-序列

1.序列标准类型操作符序列类型操作符 成员操作符 in, not in 连接操作符 + 重复操作符 * 切片操作符 [] [:] [::] 内建函数 类型转换函数 list(iter), str(obj), unicode(obj), basestring(), tuple(iter) 2.字符串 字符串的创建和赋值 访问字符串的值 改变字符串 删除字符和字符串 3.字符串和操作符标准类型操作符4.

Zerore的博客 330

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[PYTHON] 核心编程笔记之六-Python序列

6.序列:字符串,列表和元祖6.1序列6.1.1标准类型操作符6.1.2序列类型操作符成员关系操作符(in,not in)判断一个元素是否属于一个序列字符串判断一个字符是否属于这个字符串元祖判断一个对象是否属于该对象序列in/not in 操作符返回值为True/False例: obj [not] in sequence序列类型操作符序列类型符作用seq[ind]获得下标为i...

weixin_34331102的博客 234

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

python核心编程-map处理多个序列

#!/usr/bin/env python # -*- coding: UTF-8 -*-'''一个函数处理多个序列''' print map(lambda x, y: x + y, [1,3,5], [2,4,6]) print map(lambda x, y: (x+y, x-y), [1,3,5], [2,4,6]) print map(None, [1,3,5], [2,4,6]) prin

you 574

python核心编程四——序列:字符串,列表,元组

1.序列成员关系操作符 (in, not in) 2.序列类型操作符 序列操作符 作用 seq[ind]  获得下标为ind 的元素 seq[ind1:ind2] 获得下标从ind1 到ind2 间的元素集合 seq * expr 序列重复expr 次 seq1 + seq2 连接序列seq1 和seq2 obj in seq 判断obj 元素是否包含在seq 中 obj

gavin0123的专栏 795

《python核心编程》序列类型小结2

1.*strip()方法 [strip()  lstrip()  rstrip()]   (字符串) 内容:strip()传入一个参数,除去指定的首尾字符;lstrip()除去左边指定的字符;rstrip()除去右边指定的字符 1.当没有传入参数时,默认除去首尾空格   >>> str = ' hello,world! ' >>> str.strip() 'hello,world!' >

keyboard2015的专栏 185

【python核心编程】第六章 序列

1、操作符 (1)成员关系操作符:in 、not in >>> string ='abcdefg'>>> 'a' in stringTrue>>> 'h' in stringFalse>>> 'h' not in stringTrue *补充知识*:string模块 >>> import string...

weixin_30484739的博客 86

06 序列:字符串、列表和元组 - 《Python 核心编程》

???? 序列简介 ???? 字符串 ???? 列表 ???? 元组 6.1 序列顺序访问 序列类型有着相同的访问模式:它的每一个元素可以通过指定一个偏移量的方式得到。 而多个元素可以通过切片操作的方式一次得到。 下标偏移量是从0 开始到总元素数-1 结束。 标准类型操作符 标准类型操作符一般都能适用于所有的序列类型。 序列类型操作符 ...

dianzuoting0319的博客 281

2015-05-12-python核心编程(六)Python序列

#####Python序列 ---------------------------------------------------------------------------------------------------------------------- -----6.1 序列 1.标准类型操作符 2.序列类型操作符 seq[ind]-->获得下标为ind 的元素 seq[i

chenzhenzhu2011的专栏 800

python核心编程(六)— 序列:字符串、列表、元组

序列:字符串、列表、元组。有一些Python的类型,它的成员是有序排列的,且可以通过下标偏移量访问它的一个或几个成员,这类Python类型统称为序列。

WSYW126的博客 1242
上一篇: [Python]random模块中的常用函数
下一篇: Python核心编程之字典和集合
Scandinavians
博客等级 码龄19年 36粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值