python基础——04 列表、元组、字符串
程序员文章站
2022-07-14 23:06:07
...
Task 04 列表、元组、字符串
列表
1.创建
#创建4×3维列表
x = [[0 for col in range(3)] for row in range(4)]
print(x, type(x))
# [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] <class 'list'>
x = [[0] * 3 for row in range(4)]
print(x, type(x))
# [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] <class 'list'>
注意
x = [[0] * 3] * 4 (错误)
由于list的元素可以是任何对象,因此列表中所保存的是对象的指针。即使保存一个简单的[1,2,3],也有3个指针和3个整数对象。x = [a] * 4操作中,只是创建4个指向list的引用,所以一旦a改变,x中4个a也会随之改变。
2.添加元素
- list.append(obj) 在列表末尾添加新的对象,只接受一个参数,参数可以是任何数据类型,被追加的元素在 list中保持着原结构类型。
- list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
严格来说 append 是追加,把一个东西整体添加在列表后,而 extend 是扩展,把一个东西里的所有元素添加在列表后。
- list.insert(index, obj) 在编号 index 位置插入 obj
3.删除元素
- list.remove(obj) 移除列表中某个值的第一个匹配项
- list.pop([index=-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
remove 和 pop 都可以删除元素,前者是指定具体要删除的元素,后者是指定一个索引。
- del var1[, var2 ……] 删除单个或多个对象
4.列表的其他操作
- list.count(obj) 统计某个元素在列表中出现的次数
- list.index(x[, start[, end]]) 从列表中找出某个值第一个匹配项的索引位置
- list.reverse() 反向列表中元素
- list.sort(key=None, reverse=False) 对原列表进行排序
reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)
练习一
# -*- coding: UTF-8 -*-
lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
#在列表的末尾增加元素15
lst.append(15)
#在列表的中间位置插入元素20
ind = len(lst)/2
lst[ind-1] = 20
#将列表[2, 5, 6]合并到lst中
lst.extend([2,5,6])
#移除列表中索引为3的元素
del lst[3]
#翻转列表里的所有元素
lst.reverse()
#对列表里的元素进行排序,从小到大一次,从大到小一次
lst.sort()
lst.sort(reverse=True)
练习二
leetcode 852. 山脉数组的峰顶索引
class Solution(object):
def peakIndexInMountainArray(self, A):
lo, hi = 0, len(A) - 1
while lo < hi:
mi = (lo + hi) / 2
if A[mi] < A[mi + 1]:
lo = mi + 1
else:
hi = mi
return lo
元组
解压元组
#解压(unpack)一维元组(有几个元素左边括号定义几个变量)
t = (1, 10.31, 'python')
(a, b, c) = t
print(a, b, c)
# 1 10.31 python
#解压二维元组(按照元组里的元组结构来定义变量)
t = (1, 10.31, ('OK', 'python'))
(a, b, (c, d)) = t
print(a, b, c, d)
# 1 10.31 OK python
#如果只想要元组其中几个元素,用通配符「*」,英文叫 wildcard,在计算机语言中代表一个或多个元素。下例就是把多个元素丢给了 rest 变量
t = 1, 2, 3, 4, 5
a, b, *rest, c = t
print(a, b, c) # 1 2 5
print(rest) # [3, 4]
#如果不在乎 rest 变量,那么就用通配符「*」加上下划线「_」
t = 1, 2, 3, 4, 5
a, b, *_ = t
print(a, b) # 1 2
练习一
# -*- coding: UTF-8 -*-
print((1, 2)*2)
print((1, )*2)
print((1)*2)
#(1, 2, 1, 2)
#(1, 1)
#2
练习二
拆包: 对于函数中的多个返回数据, 去掉元组, 列表 或者字典 直接获取里面数据的过程.
a, b = 1, 2
#等价于 a,b = (1,2)
- 拆包时要注意,需要拆的数据的个数要与变量的个数相同,否则程序会异常
- 除了对元组拆包之外,还可以对列表、字典等拆包
- 对字典拆包后获取的是字典的key值, 而不是value值
字符串
字符串的常用内置方法
- capitalize() 将字符串的第一个字符转换为大写
- lower() 转换字符串中所有大写字符为小写
- upper()转换字符串中的小写字母为大写
- swapcase() 将字符串中大写转换为小写,小写转换为大写
- count(str, beg= 0,end=len(string)) 返回str在 string 里面出现的次数,如果beg或者end指定则返回指定范围内str出现的次数
- endswith(suffix, beg=0, end=len(string)) 检查字符串是否以指定子字符串 suffix 结束,如果是,返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查
- startswith(substr, beg=0,end=len(string)) 检查字符串是否以指定子字符串 substr 开头,如果是,返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查
- find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end,则检查是否包含在指定范围内,如果包含,返回开始的索引值,否则返回 -1
- rfind(str, beg=0,end=len(string)) 类似于 find() 函数,不过是从右边开始查找
- isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False。