字符串(string)
python3中变量可以不用设置变量类型,各种类型可以相互转化。可能这就是字符串使用如此灵活的一个原因。以下介绍一些基本概念,详细细节参见对应参考资料。
-
- 如何表示字符串类型:使用单引号(
'
),双引号("
),三引号('''
或"""
) 对文本进行包裹就能得到字符串。 - 可以用
+
对字符串进行拼接以及*
对字符串进行复制并拼接至原字符串末尾。 - 与C语言中字符串相似,python的字符串也可通过索引访问单个字符。还可以通过切片操作访问某个区间内数据。
- 如何表示字符串类型:使用单引号(
-
-
len()
用于返回字符串长度。 -
split(sep=None, maxsplit=-1)
需要分别传入两个参数界定字符串和最大分割次数。
当maxsplit
为-1
表示无限次分割,否则将字符串按照界定字符串分割maxsplit
次。
关于sep
不为空的时候,按照给定的sep
对字符串进行分割;当待分割的字符串是空字符串时,返回的列表是['']
。对于参考资料中的例子:运行
'1,,2'.split(',')
,得到['1', '', '2']
可以这样理解,split
函数从左到右按照sep
对字符串进行分割,并将分割后得到的字符左侧放入返回列表中,之后再对字符串右边用sep
进行分割。关于
sep
为空时,将按照连续的空格进行分割字符串,并且不返回空字符串。 -
replace(old, new[, count])
用old
为原字符串中待替换的字符串,用new
表示的新的字符串做替换,并返回一个替换后的拷贝字符串。[, count]
中[ ]
的含义是可选参数。count
参数是控制替换操作需要进行几次。
-
-
以下是一些程序。
# PAT中的基础编程题目集函数题7-2 time, passtime = input().split(' ') # 将读入的字符串按空格进行分割,并赋值 hour = int(time) // 100 # 将字符串类型转化为整型,并做整数运算 min = int(time) % 100 endtime = hour * 60 + min + int(passtime) endtime = endtime // 60 * 100 + endtime % 60 print(endtime)
# PAT中的基础编程题目集函数题7-31 # 解题思路:只要考虑小于字符串长度的移位操作,同时考虑到移位只是将前几个连续字符接到原字符串尾 # 因为等于字符长度的移位操作就是字符本身 # 需要得到小于字符串长度的的移位操作,只需要取余 # 移位操作可用切片操作完成 Str = input() n = eval(input()) % len(Str) # 将读入字符串作为python语句运行,将运行结果用字符长度取余 print(Str[n: ] + Str[ : n]) # 对字符串进行切片
列表(list)
- 列表的一些基本操作
- 列表的表示:用
[
和]
包裹数据,列表中的元素用,
分隔。 - 列表的创建:
s = [ ]
创建空列表,s = ['a', 'b' ]
创建含有两个字符的列表。 - 使用
in
或not in
判断元素是否在列表中;使用+
对两个列表进行拼接;使用*
对列表进行复制并拼接至原字符串末尾。 - 类似C++中的
vector
类型,列表可以通过索引访问单个元素,同时可以使用切片访问连续区域的若干元素。 - 关于遍历列表使用循环语句即可。
- 列表的表示:用
- 列表的一些函数
-
append(x)
在列表之后添加一个新的元素x
,保持列表中数据类型的一致,如果不同可以根据IDE提示更改为set或tuple类型。 -
pop([i])
弹出第i
个元素,其中i
为可选参数,未传入参数时默认为i = -1
。 -
reverse()
用于将列表自身反序,与s[: : -1]
(在文末讨论)的返回值相同。 -
len()
返回列表长度。
-
- 以下是程序
# PAT中的基础编程题目集函数题7-6 listdata = input() listdata = listdata.split(' ') print('%c %d %.2f %.2f' %(listdata[2], int(listdata[1]), float(listdata[0]), float(listdata[3]))) # 其中float()将其转换为浮点类型
关于切片(slice)
- 当
k > 0
时,返回[i, j)
区间内每隔k
的元素组成的新列表。 - 当
k < 0
时,- 当
i
(j
)为负数时,i = len(s) + i
(j = len(s) + j
)。 - 当
i
为None
时为len(s) - 1
;j
为None
时为-1
。 - 当
j+1 > i+1
时,返回空列表;否则进入4。 - 完成上述判断之后,取原列表
[j+1, i+1)
区间内的元素后逆序得到新列表,之后在新列表中选取间隔-k
的元素组成作为结果的列表。
- 当
s = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(s[: : -1])
print(s[5: 1: -2])
print(s[-1: -3: -1])
print(s[-3: : -1])
print(s[: -1: -1])
# 运行结果
# [9, 8, 7, 6, 5, 4, 3, 2, 1]
# [6, 4]
# [9, 8]
# [7, 6, 5, 4, 3, 2, 1]
# []
以第三个为例,
i
和j
不是None
,但为负。则令i = len(s) + (-1) = 9 - 1 = 8
;同理,j = 6
。
取原列表中[j+1, i+1)
的子列表,得到[8, 9]
;在做逆序操作,得到[9, 8]
。
按间隔k = 1
组成返回的列表,即[9, 8]
。