python零基础6:序列数据结构

数据结构

python数据结构比较复杂

  • 支持组织和存储数据
  • 支持复杂的数据关系
  • 优化程序性能

四类复合结构:tuple list dict set

序列类型:

  • 种类:字符串、元组、列表
    – 字符串:可以操作

集合类型:set类型

  • 特征:没有顺序、不可重复

映射关系:字典类型

序列数据类型:存储有序元素集合的组和数据类型

字符串定义:单引号或者双引号包含一串字符
字符串索引:[] 中括号提取;

  • 范围:正向索引 [-1] [n-1];反向索引 [-1] [-n]

字符串切片:[m n] 索引连续的一段,称作切片,提取得到m到n-1个(包含起始,不包含终止)

% 完整切片语法 str [start: end: step]
% start, end, step 分别默认为 0, n, 1
s[1:4]
s[1:4:1]
s[1:4:2]
s[:] # 提取字符串所有元素
s[::-1] #倒序提取列表所有元素

字符串修改

  • 字符串元素值不可改变
  • 字符串可以重新赋值
    上述涵义:
# 错误代码
greeting = 'hello world'
greeting[0] = J
# 正确代码
greeting = 'hello world'
greeting= ‘J’

字符串操作符
拼接 +
重复 *
比较操作符 (==、!=、>、<)

# 按照ASCII 值比较字符串
str1 = "apple"
str2 = "banana"
print(str1 == str2) # False
print(str1 != str2) # True
print(str1 < str2) # True
print(str1 > str2) # False

for 循环序列 & 成员操作符 in = 循环字符串元素

# %%
for letter in 'banana':
    print(letter)

字符串对象与方法

复合数据类型 功能:保存数据,提供内置于类型的函数 (python提供的内置函数)通过python手册查询或者问AI
复杂类型变量:对象
复杂类型的内置函数:方法(和普通函数区分开)

可以通过 对象名.方法名(参数) 调用特定方法

#定义字符串对象
text = "hello, python!"
# 调用对象方法
print(text.upper()) 
print(text.lower())

https://www.geeksforgeeks.org/python-string-methods/

以下是Python字符串常用方法的表格整理,可直接复制使用:

方法名作用描述示例
str.upper()将字符串所有字符转为大写"hello".upper()"HELLO"
str.lower()将字符串所有字符转为小写"HELLO".lower()"hello"
str.capitalize()首字母大写,其余小写"hello world".capitalize()"Hello world"
str.title()每个单词首字母大写"hello world".title()"Hello World"
str.strip()移除字符串两端空白字符" hello ".strip()"hello"
str.lstrip()移除字符串左侧空白字符" hello ".lstrip()"hello "
str.rstrip()移除字符串右侧空白字符" hello ".rstrip()" hello"
str.replace(old, new[, count])替换指定子串(可选替换次数)"hello".replace("l", "L", 1)"heLlo"
str.split(sep=None)按分隔符分割字符串为列表"a,b,c".split(",")['a', 'b', 'c']
str.join(iterable)将可迭代对象元素用字符串连接"-".join(['a', 'b', 'c'])"a-b-c"
str.startswith(prefix)检查字符串是否以指定前缀开头"hello".startswith("he")True
str.endswith(suffix)检查字符串是否以指定后缀结尾"hello".endswith("lo")True
str.find(sub)查找子串首次出现位置(未找到返回-1)"hello".find("ll")2
str.count(sub)统计子串出现次数"hello".count("l")2
str.isalpha()检查字符串是否只包含字母"abc".isalpha()True
str.isdigit()检查字符串是否只包含数字"123".isdigit()True
str.isalnum()检查字符串是否只包含字母或数字"abc123".isalnum()True
str.zfill(width)用零填充字符串至指定宽度"42".zfill(5)"00042"
str.format()格式化字符串"{} {}".format("hello", "world")"hello world"
f-string字符串插值(Python 3.6+)name = "Alice"; f"Hello {name}""Hello Alice"

注:所有方法均返回新字符串(原始字符串不可变),[ ]内为可选参数。

列表

列表定义

列表是一种序列数据结构,和字符串的区别:
以下为整理成表格格式的字符串与列表核心区别对比,可直接复制使用:

对比项字符串 (String)列表 (List)
元素类型仅能包含字符可包含任意数据类型(数字、字符串、列表等)
定义符号单引号 ' ' 或双引号 " "中括号 [ ]
可变性不可变(创建后无法修改元素)可变(可增删改元素)
示例"Hello"'Python'[1, "a", [2, 3], True]

特点说明

  • 字符串是序列类型,但内容受限于字符且不可变;
  • 列表是容器类型,支持混合数据类型且可动态修改。
# 整数列表
numbers = [1, 2, 3, 4, 5]
# 字符串列表
fruits = ["apple", "banana", "cherry"]
# 混合类型列表
mixed_list = [1, "hello", 3.14, True]
# 嵌套列表
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 空列表
empty_list = []

列表切片

[m:n] 提取列表中连续的一段。包含起始不包含终止元素。

>>> matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> matrix[1:2]
[[4, 5, 6]]
>>> matrix[:]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

列表特点:可改变(mutable)

numbers = [1,2,3]
numbers[0] = 2
numbers
[2, 2, 3]

列表操作符

拼接、重复 in 包含元素,for + in 配合循环列表元素

cheeses = [‘Cheddar’, ‘Edam’, ‘Gouda’]
for cheese in cheeses:
print('give me some ’ + cheese)
for x in []:
print(‘This will not print’)

列表方法

以下是常见的列表操作符及其功能的表格总结,内容清晰且可复制:


列表操作符汇总表

操作符符号/方法功能描述示例(Python)
索引[]访问列表指定位置元素lst[0] 获取第一个元素
切片[:]截取列表子集lst[1:3] 获取第2到3个元素
追加.append()在列表末尾添加元素lst.append(4)
扩展.extend()合并另一个列表lst.extend([5,6])
插入.insert()在指定位置插入元素lst.insert(1, 'x')
删除.remove()删除第一个匹配值lst.remove(3)
弹出.pop()移除并返回指定位置元素lst.pop(0)
连接+拼接多个列表lst1 + lst2
重复*重复列表元素lst * 2
成员检查in判断元素是否在列表中3 in lstTrue/False
长度len()获取列表元素数量len(lst)
排序.sort()原地排序(升序/降序)lst.sort(reverse=True)
反转.reverse()原地反转列表顺序lst.reverse()
计数.count()统计元素出现次数lst.count(2)
查找索引.index()返回元素首次出现的索引lst.index('x')
清空.clear()移除所有元素lst.clear()
复制.copy()生成浅拷贝new_lst = lst.copy()

  • pop() 是列表方法,通过索引删除元素并返回被删除的元素,如果不指定索引,则删除并返回列表最后一个元素。

  • remove() 是列表方法,通过删除列表中第一个匹配的元素,返回None。

  • list() 等同于 str.split()

s = 'spam'
t1 = list(s)
t2 = s.split()
  • str.join() 将列表中的元素连接成一个字符串

对象引用

引用是指一个变量指向内存中的某个对象。
- 变量通过引用与对象关联,而不是直接存储对象本身。
- 对不可变对象(比如字符串)的引用会指向相同对象,而对可变对象(比如列表)的引用则会指向不同对象。
– 不可变对象:数字、字符串、元组、布尔值
– 可变对象:列表、字典、集合

# %%
a = [1, 2, 3]
b = a
a is b
# True
# %%
a = [1, 2, 3]
b = [1, 2, 3]
a is b
# False

列表作为函数参数

def delete_head(t):
	del t[0]
  • 在把列表作为参数传递中,一定要区分函数内修改列表元素(返回None)和创建新列表(返回新列表)这两种不同的操作。
t1 = [1,2]
t2 = t1.append(3)
# 这里是对t1做修改,所以t1 = [1,2,3] t2 = None

元组

元组定义

  • 一类序列数据类型
  • 元素可以是任何数据类型
  • 通过圆括号()定义,元素之间用逗号分隔 `
mix_tuple = (1,"hello",3.14,True)

** 逗号创建元组:逗号是元组的真正构造器
** 圆括号可选:圆括号主要用于提高可读性,或者在需要消除歧义时使用

t1 = 'a',
# 正确构建元组
t2 = ('a')
# 构建的是字符串

元组特点

  • 元组元素不可变:元组元素无法通过赋值改变
  • 不过可以基于旧元组,生成新元组在这里插入代码片
old_tuple = (1, 2, 3)
# 基于旧元组生成新元组:拼接元素
new_tuple = old_tuple + (4, 5)
print(new_tuple) # 输出:(1, 2, 3, 4, 5)

元组方法

元组一旦创建后就不能被修改。因此,元组的方法通常不会直接修改元组本身,而是会返回一个新元组或其他类型的值。
以下是Python元组(tuple)的常用方法总结,由于元组是不可变类型,其方法相对较少,主要以查询和统计为主:

元组常用方法表

方法名描述示例返回值
count(x)统计元素x的出现次数t = (1,2,2,3); t.count(2)2
index(x)返回元素x首次出现的索引t = ('a','b','c'); t.index('b')1
index(x, start, end)在指定范围内查找元素xt = (1,2,3,2); t.index(2, 2)3

补充说明

  1. 元组没有append()extend()remove()等方法,因其不可变性
  2. 可通过len()max()min()等内置函数操作元组
  3. 支持切片操作:t = (1,2,3); t[1:] 返回 (2,3)
my_tuple = (1, 2, 3)
# 使用元组解包为多个变量赋值
a, b, c = my_tuple
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值