【Python】内置数据结构(字符串、列表、元组、字典、集合)

目录

一、字符串:

1.字符串表示:

2.字符串的输入和输出:

2.1 输入:

2.2 输出:

3.字符串下标:

4.字符串切片:

4.1 语法:

4.2 示例:

5.字符串常用操作:

5.1 查找:

5.2 修改:

5.3 判断:

二、列表:

1.列表格式:

2.列表的常用操作:

2.1 查找:

2.2 判断是否存在:

2.3 添加:

2.3.删除:

2.4 修改:

2.5 复制:

3.列表的循环遍历:

3.1 While:

3.2 For:

4.列表嵌套:

三、元组:

1.元组的定义:

2.元组的常用操作:

2.1 查找:

2.2 修改:

四、字典:

1.创建字典语法:

2.字典常用操作:

2.1 添加:

2.2 删除:

2.3 修改:

2.4 插找:

3.字典的循环遍历:

五、集合:

1.集合概述:

2.集合的常用操作:

2.1 添加:

2.2 删除:

2.3 查找:


一、字符串:

1.字符串表示:

# 1.使用单引号:
string1 = '这是一个字符串'

# 2.使用双引号:
string2 = "这是也一个字符串"

# 3.使用三引号:
string3 = '''这还是一个字符串,
只是我可以换行,注意:控制台输出也会换行!!!
'''
string4 = """这还是一个字符串,
只是我可以换行,注意:控制台输出也会换行!!!
"""

注意:

  • 引号嵌套问题
  • 使用\进行转义操作

2.字符串的输入和输出:

2.1 输入:

# 定义一个字符串:
name = "krian"

# 使用占位符格式化输出字符串:(拼接字符串)
print("我的名字是%s" % name)

%c

格式化字符及其ASCII码

%s

格式化字符串

%d

格式化整数

%u

格式化无符号整型

%o

格式化无符号八进制数

%x

格式化无符号十六进制数

%X

格式化无符号十六进制数(大写)

%f

格式化浮点数字,可指定小数点后的精度

%e

用科学计数法格式化浮点数

%E

作用同%e,用科学计数法格式化浮点数

%g

%f和%e的简写

%G

%F 和 %E 的简写

%p

用十六进制数格式化变量的地址

# 定义一个字符串:
name = "krian"

# 使用f格式化输出:
print(f"我的名字是{name}")

2.2 输出:

在Python中,使用input()接收用户输入:

# 使用name接收input函数输入的字符串:
name = input("请输入你的姓名:")

# 输出接收到的字符串:
print(f"姓名:{name}")

3.字符串下标:

        "下标"又叫"索引",下标的作用即是通过下标快速找到对应的数据。使用变量名[索引值]获取到对应下标的字符:

string = "qwertyuiop"

# 通过输入下标值,获取对应字符:
n = input("输入下标值:")

# input()函数接收到的为字符串格式,使用int()函数,将字符串格式转换为整型:
n = int(n)

# 输出对应下标地址获得的字符:
print(string[n])

4.字符串切片:

        切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。

4.1 语法:

序列[开始位置下标:结束位置下标:步长]

注意:

  • 不包含结束位置下标对应的数据,正负数均可
  • 步长是选取间隔,正负数均可,默认步长为1

4.2 示例:

string = "0123456789"

# 步长为-1,倒序选取字符串:
print(string[::-1])

# 起始和结束位置下标为负数:(-1表示最后一个数据的索引值)
print(string[-4:-1])
  • 不显示声明开始位置下标,默认从0开始;不显示声明结束位置下标,默认到最后下标值
  • 下标开始到结束方向和步长方向(正数:从左到右)冲突,则无法选取数据

5.字符串常用操作:

5.1 查找:

        查找子串在字符串中出现的位置和次数

find():检测某个子串是否包含在这个字符串,如果在返回这个子串开始位置下标,否则返回-1

字符串序列.find(子串, 开始位置下标, 结束位置下标)

        注意:开始和结束位置下标可以省略,表示整个在整个字符序列中查找

index():检测某个子串是否包含在这个字符串中。如果在返回这个子串开始的位置下标,否者则报异常

字符串序列.index(子串, 开始位置下标, 结束位置下标)

注意:开始和结束位置下标可以省略,表示整个在整个字符序列中查找

  • rfind():和find()功能相同,但查找的方向为右侧开始
  • rindedx():和index()功能相同,但查找的方向为右侧开始

count():返回某个子串在字符串中出现的次数

字符串序列.count(子串, 开始位置下标, 结束位置下标)

注意:开始和结束位置下标可以省略,表示整个在整个字符序列中查找

5.2 修改:

通过函数的形式修改字符串中的数据

replace():替换

字符串序列.replace(旧子串, 新子串, 替换次数)

注意:

  • 替换次数如果检查出次数,则替换次数为该自查出现的次数
  • 数据按照是否可以直接修改分为可变类型不可变类型两种。字符串类型的数据修改的时候不能改变原有字符串,属于不能直接修改数据的类型即是不可变类型。

split():按照指定字符分割字符串,返回列表

字符串序列.split(分割字符, num)

注意:

  • num表示的是分割字符出现的次数,即将来返回数据为num+1
  • 如果分割字符是原有字符串的子串,分割后则丢失该子串

join()用一个字符或字符串合并字符串,即是将多个字符串合并为一个新的字符串

字符串序列.join(多字符串组成的序列)

capitalize():只字符串第一个字符大写,其它的字符全部小写

title():将字符串每个单词首字母转换成大写

lower():将字符串中大写转换小写

upper():将字符串中小写转换大写

lstrip():删除字符串左侧空白字符

rstrip():删除字符串右侧空白字符

strip():删除字符串两侧的空白

ljuest():返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度的新字符串

字符串序列.ljuest(长度, 填充字符)

rjust():返回一个原字符串右对齐,并使用指定字符(默认空格)填充至对应长度的新字符串

center():返回一个原字符串居中对齐,并使用指定字符(默认空格)填充至对应长度的新字符串

5.3 判断:

判断真假,返回布尔类型结果:True或False

  • startswith():检查字符串是否是以指定子串开头,是则返回True,否则返回False。如果设置开始和结束位置下标,则在范围内检查。
字符串序列.startswith(子串, 开始位置下标, 结束位置下标)
  • endswith():判断结尾子串
  • isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False
  • isdigit():如果字符串只包含数字则返回True,否则返回False
  • isalnum():如果所有字符串至少由一个字符并且所有的字符都是数字或者字母这返回True,否则返回False
  • isspace():如果字符串只包含空白,则返回True,否则返回False

二、列表:

1.列表格式:

[数据1, 数据2, 数据3 ...... ]

        列表可以一次性存储多个数据,且可以是不同类型的数据;但是我们尽可能一个列表存储相同类型数据!

2.列表的常用操作:

2.1 查找:

下标

name_list = ['krian', 'lunaticer', 'sugar', 'lovery', 'lunaticer', 'lunaticer']

# python列表 == Java数组,可以通过下标索引获取对应位置上的数据:
print(name_list[0])
print(name_list[2])

函数:

index():返回指定数据所在位置的下标

列表序列.index(数据, 开始位置下标, 结束位置下标)
print(name_list.index('sugar', 0, len(name_list)))

注意:如果查找的数据不存在,则会报不存在错误

count():统计指定数据在当前列表中出现的次数

print(name_list.count('lunaticer'))

len():访问列表长度,即列表中数据的个数

len(name_list)

2.2 判断是否存在:

in:判断指定数据在某个列表序列,如果在返回True,否则返回False

print('krian' in name_list)

not in:判断指定数据不在某个列表序列,如果不在返回True,否则返回False

print('krian1' not in name_list)

2.3 添加:

append():列表结尾追加数据

列表序列.append(数据)

insert():指定位置插入新增数据

列表序列.insert(位置下标, 数据)
name_list = ['krian', 'lunaticer', 'sugar', 'lovery', 'lunaticer', 'lunaticer']

# 使用insert函数,插入数据到指定的位置:
name_list.insert(0, 'zhangsan')

print(name_list)

注意:

  • 列表追加或者插入数据时,直接在原列表里面添加了指定数据,即修改了原列表,故列表是可变类型数据
  • 如果append追加的是一个序列,则追加整个序列到列表
name_list = ['krian', 'lunaticer', 'sugar', 'lovery', 'lunaticer', 'lunaticer']
name_append = ['zhangsan', 'lisi', 'wangwu']

# 使用append函数追加一个序列:
name_list.append(name_append)

print(name_list)
# ['krian', 'lunaticer', 'sugar', 'lovery', 'lunaticer', 'lunaticer', ['zhangsan', 'lisi', 'wangwu']]

extend():列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表

列表序列.extend(数据)
name_list = ['krian', 'lunaticer', 'sugar', 'lovery', 'lunaticer', 'lunaticer']
name_append = ['zhangsan', 'lisi', 'wangwu']

# 使用append函数追加一个序列:
name_list.extend(name_append)

print(name_list)
# ['krian', 'lunaticer', 'sugar', 'lovery', 'lunaticer', 'lunaticer', 'zhangsan', 'lisi', 'wangwu']

2.3.删除:

del():删除指定目标,可以是整个列表,或者是列表中的某一个元素!

del 目标

del(目标)
name_list = ['krian', 'lunaticer', 'sugar', 'lovery', 'lunaticer', 'lunaticer']

del (name_list)

print(name_list)
# 会报出错误:NameError: name 'name_list' is not defined

pop():删除指定下标的数据(默认是最后一个),并返回该数据

列表序列.pop(下标)
name_list = ['krian', 'lunaticer', 'sugar', 'lovery', 'lunaticer', 'lunaticer']

delete_name = name_list.pop(0)

print(f"被pop的数据{delete_name}")

remove():移除列表中某个数据的第一个匹配项

列表序列.remove(数据)

clear():清空列表

列表序列.clear()

2.4 修改:

修改指定下标数据:

name_list = ['krian', 'lunaticer', 'sugar', 'lovery', 'lunaticer', 'lunaticer']

# 直接替换列表数据:
name_list[0] = 'loveBaby'

print(name_list)

reverse():逆置

sort():排序

列表序列.sort(key=None, reverse=False)

注意:reverse表示排序规则,reverse=True降序,reverse=False升序(默认)

2.5 复制:

copy():序列复制

3.列表的循环遍历:

3.1 While:

name_list = ['krian', 'lunaticer', 'sugar', 'lovery', 'lunaticer', 'lunaticer']

i = 0
while i < len(name_list):
    print(name_list[i])
    i += 1

3.2 For:

name_list = ['krian', 'lunaticer', 'sugar', 'lovery', 'lunaticer', 'lunaticer']

for i in name_list:
    print(i)

4.列表嵌套:

列表嵌套是指一个列表里包含了其它子列表。

name_list = [['krian', 'lunaticer', 'rose'], ['sugar', 'lunaticpo', 'lun'], ['lisi', 'lovery', 'lili']]

print(name_list[1][2])

三、元组:

一个元组可以一次性存储多个数据,元组内的数据是不能修改的。

1.元组的定义:

        元组的特点:定义元组使用(),且用,逗号隔开各个数据,数据可以是不同的数据类型。

# 定义一个单数据元组:
tuple1 = (1,)

# 定义一个多个数据元组:
tuple2 = (1, 2, 3, 4)

        注意:如果定义的元组只有一个数据,那么这个数据后面也要添加逗号,否则数据类型为唯一的这个数据的数据类型

2.元组的常用操作:

2.1 查找:

元组数据不支持修改,只支持查找:

  • 按照下标查找数据:
tupleTest = (0, 1, 2, 3, 4)
# 通过下标获取到元组中对应的值:
print(tupleTest[0])
  • index():查找某个数据,如果数据存在,返回对应的下标,否则报错
tupleTest = (0, 1, 2, 3, 4)
# 通过下标获取到元组中对应的值:
print(tupleTest.index(0))
  • count():统计某个数据当前元组出现的次数
  • len():统计元组中数据的个数

2.2 修改:

        注意:元组内的数据直接进行修改会立即报错,但是如果元组里有列表,修改列表中的数据是支持的!!!

tupleTest = (0, 1, 2, 3, ['kangkang', 'tangtang'])

# 通过下标拿到列表数据:
list = tupleTest[4]

# 修改list里面的数据,就能间接修改了元组数据:
list[1] = 'lisi'

print(tupleTest)
# (0, 1, 2, 3, ['kangkang', 'lisi'])

四、字典:

        字典里面的数据都是以键值对形式出现,字典数据和数据顺序没有关系,即字典不支持下标,无论后期数据如何变化,只需要按照对应的键的名字查找数据即可!

1.创建字典语法:

  • 符号为{}大括号
  • 数据为键值对形式出现
  • 各键值对之间使用逗号隔开
# 有数据字典:
dict01 = {'name': 'krian', 'age': 18, 'gender': '男'}

# 无数据字典:
dict02 = {}

# 调用函数的方式创建:
dict03 = dict()

2.字典常用操作:

2.1 添加:

字典序列[key] = 值

注意:

  • 如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。
  • 字典为可变类型

2.2 删除:

  • del()/del:删除字典或删除字典中指定的键值对
# 有数据字典:
dict01 = {'name': 'krian', 'age': 18, 'gender': '男'}

# 删除指定的键值对:
del (dict01['name'])

print(dict01)
  • clear():清空字典

2.3 修改:

字典序列[key] = 值

注意:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。

2.4 插找:

key值查找:

# 有数据字典:
dict01 = {'name': 'krian', 'age': 18, 'gender': '男'}

# 通过key值查找数据:
print(dict01['name'])

注意:如果当前查找的key存在,则返回对应的值;否则报错!

get()函数:

字典序列.get(key, 默认值)

        注意:如果当前查找key不存在,则返回第二个参数(默认值),如果省略第二个参数,则返回None

  • keys()函数:查找字典中所有的key,返回一个可迭代对象
  • values()函数:查找字典中所有的value,返回一个可迭代对象
  • items()函数:查找字典中所有的键值对,返回可迭代对象,里面的数据都是元组,元组数据1是字典的key,元组数据2是字典的value。

3.字典的循环遍历:

# 有数据字典:
dict01 = {'name': 'krian', 'age': 18, 'gender': '男'}

# 使用keys()函数,获取字典所有的key值:
for key in dict01.keys():
    print(key)
# 有数据字典:
dict01 = {'name': 'krian', 'age': 18, 'gender': '男'}

# 使用values()函数,获取字典所有的values值:
for value in dict01.values():
    print(value)
# 有数据字典:
dict01 = {'name': 'krian', 'age': 18, 'gender': '男'}

for item in dict01.items():
    print(item)
# 有数据字典:
dict01 = {'name': 'krian', 'age': 18, 'gender': '男'}

for key, value in dict01.items():
    print(f"{key} = {value}")

五、集合:

1.集合概述:

        创建集合使用{}set(),如果创建空集合只能使用set(),因为{}用来创建空字典。集合中的数据不能重复出现,并且集合内的数据是无序的。

# 集合中的数据不能重复:
data = {1, 2, 3, 4, 5, 6, 7}

# {1, 2, 3, 4, 5, 6, 7}
print(data) 

2.集合的常用操作:

2.1 添加:

add():因为集合有去重功能,所以,当向集合内追加的数据是当前集合已有数据的话,则不进行任何操作。但是,不能追加数据序列,否则会报错。

# 集合中的数据不能重复:
data = {1, 2, 3, 4, 5, 6, 7}

# 向集合追加数据:
data.add(797)

print(data)

update():追加的数据是序列,追加单一数据会报错。(对序列中的数据逐一追加到集合中)

# 集合中的数据不能重复:
data = {1, 2, 3, 4, 5, 6, 7}
list = [100, 200, 400, 400, 500]

# 向集合追加数据:
data.update(list)

print(data)

2.2 删除:

pop():函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

# 集合中的数据不能重复:
data = {2, 3, 4, 5, 6, 7}

# pop()移除列表中的一个元素(不放回)
data_pop = data.pop()

print(data_pop)

discard():删除集合中指定数据,如果数据不存在也不会报错。

remove():删除集合中指定数据,如果数据不存在则报错

2.3 查找:

in:判断数据在集合序列

not in:判断数据不在集合序列


  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃糖的范同学

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值