Python:字符串、列表和元组


  1. 列表中list的extend函数没有返回值,只是把原list项扩展
  2. Str也是序列的一种,可以使用偏移量来访问序列中的元素和进行切片,切片支持从前面向后切,也支持从后面往前面切
  3. 序列是一个可迭代的类型,其中for循环支持任何可迭代的类型
  4. 成员关系操作符(in 、 not in),连接操作符 + ,重复操作符 * ,切片操作符[] [:] [::]
  5. BIF中类型转换函数list(),str(),uncode(),tuple(),,,
    6.BIF中可操作的函数len(),reversed(),max(),min(),sum()
    7.Python中没有字符概念,只有字符串,所以一定程度上可以解析单引号和双引号是没有什么区别的。同时字符串是一个直接的标量或者是直接量,是不可以改变的,同时字符串是序列的一种可以迭代。
    8.可以使用空字符串”“或者del清空或者删除一个字符串
    9.Python中一种奇怪的索引情况如下

a[:]
[0, 1, 2, 3, 4]

a[:8]
[0, 1, 2, 3, 4]

a[5]
Traceback (most recent call last):
File “

10.在性能上可以对重复操作放到循环的外面完成,较少循环操作的次数,字符串因为不能改变所以每次+操作字符串都会重新添加一个字符串

11.编译时的字符串连接

a=”dkfjklasdf”“jfhkajsdf”\
“djhfkasjdjf”“dfhajkshdkf”
a
‘dkfjklasdfjfhkajsdfdjhfkasjdjfdfhajkshdkf’


  1. 普通字符和Unicode字符连接时,最后以Unicode字符串存在

“Helleo”+u” “+”world!”
u’Helleo world!’


    13.BIF函数cmp(),len(),max(),min(),,其中max()和min()函数不仅可以用于字符串求其中最小的字符,同时也可以用于序列求其中最小的项

14 python中无论是单引号,双引号,三引号都是表示字符串,
其中三引号可以包括换行和tab键这种特殊的键。
15.Python中支持Unicode和ASCALL编码,ASCALL是其中的硬编码,而unicode需要使用u特定指定字符串是否是Unicode编码。同时python中的BIF,str()和chr()是默认支持ASCALL,Unicode字符会转换为ASCALL码再使用,所以str()和chr()有时候会unicode错,unicode()和unichar()是str()和chr()的Unicode升级。unicode是一种多字节的编码格式,其支持UTF-8, UTF-16, ASCALL等多种字符编码格式

15如何避免在日常编程中的字符编码错误
1)程序的字符串尽量使用Unicode的字符串,也就是字符串前面要加“u”
2)不要使用str()函数,而是使用unicode()函数
3)不要使用string模块,如果传给string的是非ASCALL的字符,string就会解读出错。
4)在写入数据库和网络数据是才对unicode字符进行encode、decode编解码。
5)unicode是一种类型,可以实现unicode字符对象。
6)pickle模块只支持ASCALL编码的字符串,所以其与str()与chr()兼容很好。
7)解决118N问题注意上面所述的各种情况的综合使用
8)string 模块已经停止使用,其只支持ASCALL,要与unicode兼容的代码就不要使用string模块。
16.pythonBIF的unicode()函数传入字符串返回unicode字符对象。而不同字符对象和unicode字符对象都有encode()和decode()函数。

>>> unicode("dkhfaklsd")
u'dkhfaklsd'
+++++++++++++++++++++++++++++++++++++++++++++
>>> #普通字符串的编码
>>> 'jdkf'.encode("utf-8")
'jdkf'
+++++++++++++++++++++++++++++++++++++++++++++
>>> U"dfajkd".encode("utf-8")
'dfajkd'
+++++++++++++++++++++++++++++++++++++++++++++
 type(U"dfajkd".encode("utf-8"))#str类型
<type 'str'>
+++++++++++++++++++++++++++++++++++++++++++++
>>> type(unicode("dkhfaklsd"))#unicode类型
<type 'unicode'>
>>> 

17.列表是任意数目的Python对象的容器,也是序列类型,能够通过下标访问一个或者一块连续的元素。字符串也是序列类型,但是其对象只能是字符。字符串在内存中不能改变,但列表可以增加和删除元素。元组和列表的很多操作相似,然而元组是不能改变的,是只读类型。

###列表解析~~,,
>>> [i for i in range(30) ]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
++++++++++++++++++++++++++++++++++++++++++++++++
>>> [i for i in range(10) if i%2==0]
[0, 2, 4, 6, 8]
>>> 

18.列表中的sort(),extend(),reverse()没有返回值,Python后面的版本加入的BIF中的reversed()和sorted()是有返回值的。

19Python中默认多对象,逗号分隔,没有明确的符号定义的都是元组

>>> a,b="dkjflkads","dfjlksdf"#元组(a,b)
>>> a
'dkjflkads'
>>> b
'dfjlksdf'
>>> 

20.注意元组里边不能改变的属性,下边的情况

>>> t=(["fjdsk","fjlkads"],"dshfka")
>>> t
(['fjdsk', 'fjlkads'], 'dshfka')
++++++++++++++++++++++++++++++++++++++++++
>>> t[0][1]="ok"
>>> t
(['fjdsk', 'ok'], 'dshfka')
++++++++++++++++++++++++++++++++++++++++++
>>> t[0].extend("fasdkl")
>>> t
(['fjdsk', 'ok', 'f', 'a', 's', 'd', 'k', 'l'], 'dshfka')
++++++++++++++++++++++++++++++++++++++++++
>>> t[0].extend(["djflasdkjf"])
>>> t
(['fjdsk', 'ok', 'f', 'a', 's', 'd', 'k', 'l', 'djflasdkjf'], 'dshfka')
>>> 

21.对于非容器类型(比如数字、字符串和其他原子类型的对象,像代码、类型、和xrange对象等)没有被拷贝的说法。浅拷贝是用完全切片操作来完成的。如果元组变量只包含原子类型对象,对它的深拷贝将不会进行。

>>> 
>>> person=["djflkadl",("dfjalkdsf",)]
>>> person
['djflkadl', ('dfjalkdsf',)]
#对原子类型的进行深拷贝
>>> newperson = copy.deepcopy(person)
>>> [id(x) for x in person,newperson]
[45379752, 45313720]
##person里边的项是原子类型所以并没有产生深拷贝
>>> [id(x) for x in person]
[45400192, 45388384]
>>> [id(x) for x in newperson]
[45400192, 45388384]
>>> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值