欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

列表、元组、字符串

程序员文章站 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']]

练习

存在iiii >0 且i<len(k)1i<\operatorname{len}(k)-1, 使得k[0]<k[1]<<k[i1]<k[j]>k[i+1]>k[len(k)1]\mathrm{k}[0]<\mathrm{k}[1]<\ldots<\mathrm{k}[\mathrm{i}-1]<\mathrm{k}[\mathrm{j}]>\mathrm{k}[\mathrm{i}+1] \ldots>\mathrm{k}[\operatorname{len}(\mathrm{k})-1]

这个ii就是顶峰索引。

现在,给定一个山脉数组,求顶峰索引。

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']

字符串格式化


相关标签: py编程基础