列表、元组、字符串
程序员文章站
2022-07-14 22:13:42
...
Table of Contents
列表list
列表是有序集合,没有固定大小,能够保存任意数量任意类型的 Python 对象
x = [[0 for col in range(3)] for row in range(4)]
x
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
x = [[0] * 3] * 4; x
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
列表的修改
append 和 extend 末尾增加
insert 任意位置之前插入
list.remove(obj) 移除列表中某个值的第一个匹配项
list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
删除单个或多个对象。
x = list('hello')
x.append(list('ni'))
x
['h', 'e', 'l', 'l', 'o', ['n', 'i']]
x = list('hello')
x.extend(list('ni'))
x
['h', 'e', 'l', 'l', 'o', 'n', 'i']
x = list('hello')
x.insert(0,list('ni'))
x
[['n', 'i'], 'h', 'e', 'l', 'l', 'o']
x = list('hello')
x.remove('l'); x
['h', 'e', 'l', 'o']
x = list('hello')
x.pop(0),x
('h', ['e', 'l', 'l', 'o'])
x = list('hello')
x.pop(2),x
('l', ['h', 'e', 'l', 'o'])
x = list('hello')
del x[-3:]
x
['h', 'e']
列表运算
等号操作符:== 只有位置和内容相同时候才返回true
连接操作符 +
重复操作符 *
成员关系操作符 in、not in
a,b,c = list('hello'),list('hello'),list('Hello')
a == b,b == c
(True, False)
a = ['o']
a *= 3 # 相当于a = a*3
a
['o', 'o', 'o']
a,b,c = list('hello'),list('hello'),list('Hello')
a + b
['h', 'e', 'l', 'l', 'o', 'h', 'e', 'l', 'l', 'o']
其他操作
list.count(obj) 统计某个元素在列表中出现的次数
list.reverse() 反向列表中元素 list[::-1]
list.sort(key=None, reverse=False) , key 主要是用来进行比较的元素,只有一个参数
list.index() 返回某个值的第一个位置
a = list('hello world')
a.count('l')
3
a = list('hello world')
a.reverse()
print(a)
a[::-1]
['d', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l', 'e', 'h']
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
a = list('hello world')
a.sort(reverse=True)
a
['w', 'r', 'o', 'o', 'l', 'l', 'l', 'h', 'e', 'd', ' ']
a = list(range(-10,10,3))
a.sort(key=lambda x:abs(x))
a,a.index(8)
([-1, 2, -4, 5, -7, 8, -10], 5)
a = [list('hello'),list('he'),list('helwess')]
a.sort(key= lambda x:len(x),reverse=True)
a
[['h', 'e', 'l', 'w', 'e', 's', 's'], ['h', 'e', 'l', 'l', 'o'], ['h', 'e']]
练习
存在, >0 且, 使得
这个就是顶峰索引。
现在,给定一个山脉数组,求顶峰索引。
def get_index(a):
b = list(enumerate(a))
b.sort(key = lambda x:x[1],reverse=True)
return b[0][0]
get_index([1, 2, 4, 6, 4, 5])
3
元组tuple
元组创建三种方式
创建元组可以用小括号 (),也可以什么都不用,为了可读性,建议还是用 ()
元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
a = 'a','b'
b = ('a','b')
c = tuple('ab')
d = ('a')
e = ('a',)
a,b,c,d,e
(('a', 'b'), ('a', 'b'), ('a', 'b'), 'a', ('a',))
元组有不可更改 (immutable) 的性质,因此不能直接给元组的元素赋值,但是只要元组中的元素可更改 (mutable),那么我们可以直接更改其元素
t1 = (1, 2, 3, [4, 5, 6])
# t1[1] = 3 # 元组不可修改
t1[3][1] = 0
t1
(1, 2, 3, [4, 0, 6])
元组相关的操作符
== , + ,* ,in ,not in
和类别操作相同
元组操作和解压
元组不可修改,只有index和count操作
元组的解压
x,y,z,t = t1
x
1
如果你只想要元组其中几个元素,用通配符「*」,英文叫 wildcard,在计算机语言中代表一个或多个元素。下例就是把多个元素丢给了 rest 变量。
x,*y,t = t1
y
[2, 3]
字符串 str
转义
\\ \' \"
\n换行 \t tab \r回车
print(' 11\n1\t1')
11
1 1
# 在字符串之前添加r''取消\的作用
print(r' 11\n1\t1')
11\n1\t1
# 字符串中''''''才能换行
print('''1
1''')
1
1
字符串函数
find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end,则检查是否包含在指定范围内,如果包含,返回开始的索引值,否则返回 -1。
rfind从右开始寻找
isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False。
ljust(width[, fillchar])返回一个原字符串左对齐,并使用fillchar(默认空格)填充至长度width的新字符串。
rjust(width[, fillchar])返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度width的新字符串。
capitalize() 将字符串的第一个字符转换为大写。
lower() 转换字符串中所有大写字符为小写。
upper() 转换字符串中的小写字母为大写。
swapcase() 将字符串中大写转换为小写,小写转换为大写。
a = 'heLLo'
a.lower(),a.upper(),a.capitalize(),a.swapcase()
('hello', 'HELLO', 'Hello', 'HEllO')
endswith(suffix, beg=0, end=len(string)) 检查字符串是否以指定子字符串
a.endswith('O'),a.startswith('h')
(False, True)
find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end,则检查是否包含在指定范围内,如果包含,返回开始的索引值,否则返回-1
rfind从右开始寻找
a.find('L'),a.rfind('L'),a.find('l')
(2, 3, -1)
lstrip([chars]) 截掉字符串左边的空格或指定字符。
rstrip([chars]) 删除字符串末尾的空格或指定字符。
strip([chars]) 在字符串上执行lstrip()和rstrip()
a = ' hello'
a.lstrip(),a.rstrip('l'),a.rstrip('o')
('hello', ' hello', ' hell')
replace(old, new [, max]) 把 将字符串中的old替换成new,如果max指定,则替换不超过max次。
a.replace('l','zz',1),a.replace('l','zz')
(' hezzlo', ' hezzzzo')
split(str="", num) 不带参数默认是以空格为分隔符切片字符串,如果num参数有设置,则仅分隔num个子字符串,返回切片后的子字符串拼接的列表。
会删除被分割的字符
a.split('l')
[' he', '', 'o']
字符串格式化
上一篇: 选择器——基本选择器
下一篇: 地区选择器