
s = '春分' print(s) print(len(s)) #字符串的长度 print(s.encode()) #encode——解码 print(s.encode().decode()) #decode——编码
不可变是在说无法对字符串的本身进行修改,
序列:字符串继承序列类型(列表、元组、range)
[i.upper() for i in 'Hello'] #['H', 'E', 'L', 'L', 'O']
序列是容器类型,‘成员’们站成了有序的队列,我们从0开始进行对每一个成员进行标记,0,1,2,3……这样,便可以通过下标来访问序列中的一个或几个成员
成员关系操作符:(in,not in)判断某元素是否属于成员里头
链接操作符(+):拼接
重复操作符(*):
用法:s * n
*用于指定序列重复次数
当n的值小于0的时候都按照n = 0 对待(将结果返回一个与s类型相同的空序列)
另外需要注意的是序列s中的元素并没有被复制,他们只是被引用了多次。
lists = [[]]*3 lists #[[], [], []] list[0].append(3) lists # [[3], [3], [3]]
[[]]是一个单元素列表,包含一个空列表,所以[[]]*3中的三个元素都引用这个空列表。这三个列表都是指向同一个空列表,修改其中的任意一个元素都会改变这个空列表。eg:
lists = [[] for i in range(3)] lists[0].append(3) lists[1].append(5) lists[2].append(7) lists #[[3],[5],[7]] lists = [[]*3] #[[]] 这时的重复操作针对的是元素而不是容器本身
切片操作符([]、[:]、[: :])
通过切片功能可以访问序列的一个或者多个成员。和C一样,在访问单个成员时你要保证你要访问下标的成员是否存在,否则会引发IndexError异常
索引——访问单个成员[]
astr = 'Python' astr[0] #P astr[3] #h
注意,因为-0等于0,负数的索引从-1开始
切片——访问连续的多个成员[satrting_index:ending_index]
切片索引有默认值,默认的起始索引是0,默认的终止索引是所要切片的字符串的长度。
注意起始索引是包含进来的,终止索引是排除在外的。所以,s[:i]+s[i:]永远等于s
记住切片如何工作的一种方法是将索引看作是字符间的点,第一个字符的左侧的位置为0,最后一个字符的左侧位置为字符的长度。比如:
+---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1
另外需要注意的是,当使用切片访问连续的多个成员时超出索引范围将超出索引范围将·被很好的处理
以等差数列形式的下标进行访问:[starting_index:ending_index:step_length]
step_length表示的是步长:
从i到j具有步长k的s的切片被定义为索引x=i+nk的项目序列,使得0<=n<(j-1)/k.换句话说,索引是i,i+k,i+2k,i+3k……当到达j时停止(但不把包括j)。当k为正时,如果i和j更大,则他们将减少为len(s)-1.如果i或j被省略或或没有,他们将称为“end”值(end取决于k的符号)。注意,k不能为0。如果k为None,则将其视为1.
(1,2,3,4,5,6)[0:6:3] #(1,3,5) bstr = "abcdefg" bstr[::-1] # 返回'gfedcba',瞬间反转,未添加的参数默认为开始和结束 bstr[::] # 返回'abcdefg',未添加的参数都使用默认值 cstr = '012345' cstr = '012345' # '543210' cstr[None::-1] # '543210' cstr[-1::-1] # '543210' cstr[-1:None:-1] # '543210' cstr[-1:len(cstr)-1:-1] # '' cstr[:0:-1] # '54321'
用于序列的内建函数:
三种创建字符串的方式:单引号、双引号、三引号
其中,三引号创建的字符可以跨越多行,其中的空白(例如每行的换行符及行首或行末的空格)会被包含进所创建的字符串字面值
python允许空字符串‘ ’,他不包含任何字符但完全合法。空字符串是其他任何字符串的子串。
字符串字面量是一个单独的表达式,如果多个字符串字面量中间仅包含空白,则他们将他们被隐性地转换成一个单一的字符串字面量。所以, (“spam” “eggs”) == “spameggs”
同样,还可以使用str构造器将其他对象转换为字符串
str(98.6) # '98.6' str(True) # 'True'
使用转义:
常用的转义符:n(换行符)、t(Tab制表符)、r(回车)、'(单引号)、"(双引号)、\(反斜杠)
用于字符串的内建函数:
input()获得用户输入,返回一个字符串
dir(str) #查看一个对象的属性或方法
import getpass getpass.getpass() #密码操作
chr()接收一个整数,返回相应的Unicode字符
ord()功能与char()相反