当前位置: 首页 > article >正文

Python 5个数据容器

列表(list)

特点:可以被修改

列表的定义

定义空列表:

变量名 = []  变量名 = list()

定义变量:

变量名 = [元素1,元素2,元素3,... ]

取出列表元素

列表名 [下标索引]

从前向后,从0开始;从后向前,从-1开始

嵌套列表:

列表的常用操作
列表.append(元素)

向列表追加一元素

列表.extend(容器)

将数据容器的内容依次取出,追加到列表尾部

列表.insert(下标,元素)

在指定下标处,插入指定元素

del 列表[下标]

删除列表指定下标元素

列表.pop(下标)

删除列表指定下标元素;还能把删掉的元素作为返回值得到

列表.remove(元素)

从前向后,删此元素第一个匹配项

列表.clear()

清空列表

统计
列表.count(元素)

统计此元素在列表中出现的次数

len(列表)

统计容器内有多少元素

列表.index(元素)

查找指定元素在列表的下标

列表的遍历

while

for —— 只是将容器里面的内容挨个取出

for ele in [1,2,3,4,5]:

        print(f"列表中的元素有:{ele}")

元组(tuple)

特点:不可被篡改

元组的定义

定义空元组:

变量名 = () 变量名 = tuple()

定义元组变量:

变量名 = (元素1,元素2,元素3,...)

🔺定义单个元素

t1 = ("hello",) //当元组只有一个数据时,这个数据后面要加,

取出元组元素

元组名 [下标索引]

嵌套元组:

my_tuple = ( (1 , 2 , 3 ) , (4 , 5 , 6) )
print(my_tuple[0][1])

my_list[0] = (1 , 2 , 3) 

元组的常用操作
index() 

查找某个数据,存在返回对应的下标

统计
count()

统计某个数据在当前元组出现的次数

len(元组)

统计元组内的元素个数

元组的遍历

while

for

for ele in (1,2,3,4,5):

        print(f"元组的元素有:{ele}")

注意:元组的内容不可修改;但元组内的列表的内容可以修改

t1 = (1, 2, ['itheima', 'itcast'] )

t1[2][1] = 'best' 

>> (1, 2, ['itheima', 'best'] )

字符串(str)

不可修改

取出字符串特定位置的字符

从前向后,下标从0开始

从后向前,下标从-1开始

字符串的常用操作
查找
字符串.index(字符串)

查找特定字符串的下标索引值(返回该字符串在原字符串的起始下标)

替换
字符串.replace(字符串1,字符串2)

将字符串中,字符串1的全部内容替换为字符串2(得到的是一个新字符串,不是修改字符串本身)

分割
字符串.split(分隔符字符串)

按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中

my_str = "hello python itheima itcast"
new_my_str = my_str.split(" ")
print(new_my_str)

>> ['hello', 'python', 'itheima', 'itcast'] 

去除

去除字符串前后空格和换行符 —— 字符串.strip()

my_str = " hello python itheima itcast "
print(my_str.strip())

去除字符串前后指定字符串 —— 字符串.strip(字符串)

my_str = "12hello python itheima itcast21"
print(my_str.strip("12"))

 按照单个字符串(划分两个小子串,满足任意一个就去掉),1,2都会被移除

统计
字符串.count(字符串)

统计字符串中某字符串的出现次数

len(字符串)

统计字符串的长度

字符串的遍历

while

for

for i in "黑马程序员":

        print(i)

序列的切片

列表、元组、字符串均可视为序列;序列支持切片

语法:序列 [起始下标:结束下标(不含):步长]

步长为1:(一步一个)一个个取;步长为2:(一步两个)跳一个取;步长为N:跳N-1个取;

步长为负数:反向取(起始下标,结束下标也要反向标记)

1.my_tuple = (0,1,2,3,4,5,6)

print(my_tuple[:]) //起始和结束不写表示从头到尾;步长为1可以省略

>>(0,1,2,3,4,5,6)

2.my_str = "01234567"

print(my_str[::2])

>>0246

3.my_str = "01234567"

print(my_str[::-1]) //等同于将序列反转

>>76543210

序列切片的实践

my_str = "万过薪月,员序程马黑来,nohtyP学"
#1.倒序,切片取出
print(my_str[::-1][9:14])
#2.切片取出,再反转
print(my_str[5:10][::-1])
#3.split,分隔;来替换空(是空!);倒序字符串
print(my_str.split(",")[1].replace("来","")[::-1])

集合(set)

集合的定义

特点:无序,不支持下标索引访问,但允许修改;去重;

定义空集合:

变量名 = set()

定义集合变量:

变量名 = {元素1,元素2,元素3,...}

集合常用操作
添加新元素

集合.add(元素)

将指定元素,添加到集合内

移除元素

集合.remove(元素)

从集合中随机取出一个元素

集合.pop()

清空集合

集合.clear()

集合1中求集合2的补集

集合1.difference(集合2) //集合1有而集合2没有;集合1、集合2不变

set1={1,2,3}
set2={1,5,6}
print(set1.difference(set2))

>>{2,3} 

消除两个集合交集

集合1.difference_update(集合2)//集合1内删和集合2相同的元素;集合1被修改;集合2不变

set1={1,2,3}
set2={1,5,6}
set1.difference_update(set2)
print(set1)

 >> {2,3}

2个集合合并为1个集合

集合1.union(集合2)//将集合1和集合2组合成新集合

统计集合元素数量

len(集合)

集合的遍历

集合不支持下标索引,不能用while;得用for

for ele in {1,2,3,4,5}:

        print(ele)

字典(dict)

特点:字典不允许key的重复;新的会把老的覆盖掉

字典的定义

定义空字典:

my_dict = {} my_dict = dict()

定义字典变量:

my_dict = { key : value, key : value , ... , key : value }

字典数据的获取

通过key取对应的value

字典的嵌套

用字典记录学生各科的考试信息

姓名语文数学英语
王力宏776633
周杰伦888655
林俊杰999666
my_dict = {
    "王力宏" : {
        "语文" : 77,
        "数学" : 66,
        "英语" : 33
    },
    "周杰伦" : {
        "语文" : 88,
        "数学" : 86,
        "英语" : 55
    },
      "林俊杰" : {
        "语文" : 99,
        "数学" : 96,
        "英语" : 66
    }
}

看周杰伦的语文信息 —— my_dict["周杰伦"]["语文"]

字典的常用操作
新增和更新
字典[key] = value 

对不存在的key执行这个操作,是新增;对已存在的key执行这个操作,是更新value值

删除元素
字典.pop(key)

返回指定key的value

清空字典
字典.clear()
获取全部key
字典.keys()

得到字典中的全部key

统计字典内元素数量
len(字典) 

len(my_dict)


http://www.kler.cn/a/384730.html

相关文章:

  • Rust闭包(能够捕获周围作用域变量的匿名函数,广泛应用于迭代、过滤和映射)闭包变量三种捕获方式:通过引用(不可变引用)、通过可变引用和通过值(取得所有权)
  • 【CUDA】线程配置
  • Sophos | 网络安全
  • .NET6中WPF项目添加System.Windows.Forms引用
  • 安卓智能指针sp、wp、RefBase浅析
  • 【提效工具开发】Python功能模块执行和 SQL 执行 需求整理
  • nodeJS程序如何引入依赖包
  • Fortran安装(vscode+gcc+Python)
  • github和Visual Studio
  • Python并发编程库:Asyncio的异步编程实战
  • 智慧城市智慧城市项目方案-大数据平台建设技术方案(原件Word)
  • 如何学习Java“高并发”,并在项目中实际应用?
  • uniapp(API-Promise 化)
  • 华为云前台网络是如何使用,功能有哪些?
  • 发现个免费建站免费体验模板使用的地方(腾讯云上)
  • DQN详解
  • 分享大模型发展进入新阶段,产业应用成为竞争焦点
  • 80后聊架构:架构设计中两个重要指标,延时与吞吐量(Latency vs Throughput) | 架构师之路...
  • Java链表及源码解析
  • 鸿蒙next选择 Flutter 开发跨平台应用的原因
  • 探索 Java 中 String 类的常用方法
  • MySQL分区表(二)
  • 2024-11-07 问AI: [AI面试题] 解释推荐系统的概念
  • WorkFlow源码剖析——Communicator之TCPServer(中)
  • Hive 的数据存储单元结构
  • 存储数据库的传输效率提升-ETLCloud结合HBASE