python数据容器

简介: python数据容器

一、list列表

亮点:python中的list可以存储不同类型的元素
# list_demo.py
# 数据列表的定义 及 下标获取指定元素
name_list = ["c++", "java", "python", "java"]
print(name_list)
print(name_list[0])
print(name_list[1])
print(name_list[2])
print(type(name_list))
person = ["lwang", 20, "beijing"]
print(person)
print(person[0])
print(person[1])
print(person[2])
print(type(person))
array = [[1,2,3],[4,5,6]]
print(array)
print(array[0])
print(array[0][0])
print(array[0][1])
print(array[0][2])
print(array[1])
print(array[1][0])
print(array[1][1])
print(array[1][2])
print(type(array))
# list提供的方法
# 查找指定元素的下标
index = name_list.index("c++")
print("c++ idex: %d" % index)
# 修改指定下标的元素
name_list[1] = "c#"
print("name_list[1]: %s" % name_list[1])
print(name_list)
# 在指定下标的位置插入元素
name_list.insert(1, "java")
print(name_list)
# 元素追加到一个元素到list末尾
name_list.append("php")
print(name_list)
# 元素追加整个容器的数据
lsit2 = [1,3,5]
name_list.extend(lsit2)  #python中的list可以存储不同类型的元素
print(name_list)
# 删除元素语法  1. del list[index]  2. list.pop(index) pop方法
del name_list[0]
print(name_list)
element = name_list.pop(1) # 从list中pop出该元素,可以通过返回值接收弹出的元素
print(f"element = {element}")
print(name_list)
# remove 删除list中第一个匹配的元素
name_list.remove("java")
print(name_list)
name_list.append("java")
print("name_list 中java的个数为:%d" % name_list.count("java"))
print("name_list 中总共元素的个数为:%d" % len(name_list))
# name_list.clear()
# print(name_list)
# list 的遍历
print("==================== name_list 的遍历 ========================")
def list_check_v1():
    index = 0
    for x in name_list:
        print(f"当前的元素为:{x}")
list_check_v1()
print("==================== 分割线 ========================")
def list_check_v2():
    index = 0
    while index < len(name_list):
        element = name_list.pop()
        print(f"当前的元素为:{element}")
list_check_v2()

二、元组tuple

元组中的元素不允许被修改

# tuple 元组
t1 = ("lwang", 20, "beijing")
print(t1[0]) # 支持下标获取元素
# t1[0] = "panda" # 元组中的元素不允许被修改
print(t1)
t2 = ()
t3 = tuple();
#元组中的元素可以是list
t4 = ("c++", "java", "python", [1, 3, 5])
print(t4)
t4[3][0] = 0  # 修改的是元组中的列表元素
print(t4)
print("c++在t4中的index为:%d" % t4.index("c++"))
idx = 0
while idx < len(t4):
    print(f"elemetn {t4[idx]}")
    idx += 1
print("=========== 分割线 ===========")
for item in t4:
    print(f"item {item}")

三、字符串string

同元组一样,也是不可修改的数据容器。

3.1 通过下标访问
3.2 index

语法:index = str.index(字符或者字符串),查找指定字符或者字符串在str中的起始位置

3.1 replace

字符串替换,语法:newstr = str.replace(str1, str2) 表示,将str中的str1全部替换为str2,不是修改str本身,而是生成了新的字符串,通过返回值接收。

3.4 split

字符串分割,存入到列表对象。语法:list = str.split(分割标识)。str本身不变,会得到一个列表对象,通过返回值接收。

3.4 strip

去掉字符串前后的指定字符。new_str = str.strip(字符或者字符串) 参数默认为 “空格”

3.5 count

获取指定字符串在原始字符串中出现的次数。

3.5 len

获取字符串的长度。

str = ("hello world i am panda")
print(str)
print(str[0])
# str[0] = "H"  # 不允许修改
print("am 的idx 是%d " % str.index("am"))
new_str = str.replace("o", "O")
print(new_str)
res_list = str.split(" ")
print(res_list)
str2 = ("  here is strip test    ")
str3 = ("122121212here is strip test122121212")
new_str2 = str2.strip()
print(new_str2)
new_str3 = str3.strip("12")
print(new_str3)
cnt = str.count("l")
print(f"l 在str中出现的次数为:{cnt}")
print(f"str的长度为:{len(str)}")

三、数据容器(序列)的切片

实际上就是从原始序列中按照指定的步长取子序列。可以从左往右取,也可以从右往左取。

# 切片
# 语法:序列[start:end:step],表示从start位置开始没间隔step选取一个元素,不包含end位置的元素,返回新的序列
# step 可以为负数,表示从右往左取元素,默认step为1
name_list = ["c++", "java", 1, 2, 3, 4]
new_list = name_list[1:4]
print(new_list)
new_list = name_list[-1:-4:-1]
print(new_list)
t1 = ("one", "two", "three", "four", "five", ["six", "seven", "eight", "nine"])
print(t1)
t2 = t1[0:5:2]
print(t2)
str = "1234567891011"
print(str)
new_str = str[::1]
print(new_str)
new_str = str[::3]
print(new_str)
new_str = str[::] # 起始可以不写,表示从头到尾,默认step为1
print(new_str)
new_str = str[::-1] # 起始可以不写,表示从头到尾,step为-1,表示从尾到头取,步长为1
print(new_str)

三、集合set

不允许重复,乱序。

# 集合 set
# 乱序,不重复
my_set = {"c++", "java", "c++", "python"}
print(my_set)
print(f"my_set的类型是:{type(my_set)}")
# 1.添加元素
my_set.add(1)
print(my_set)
# 2.移除指定元素
my_set.remove(1)
print(my_set)
# 3.随机弹出一个元素,集合本身元素减1
element = my_set.pop()
print(element)
print(my_set)
# 4.清空集合
# my_set.clear()
# print(my_set)
# 5.求差集
# 语法:s1.difference(s2) 意思是,s1集合有s2没有的元素
s1 = {1, 2, 3, 4, 5}
s2 = {4, 5, 7, 8, 9}
# s3 = s1.difference(s2)
# print(f"集合s1 和 s2 的差集为:{s3}")
#
# s3 = s2.difference(s1)
# print(f"集合s2 和 s1 的差集为:{s3}")
# 6.消除两个集合的差集,语法:s1.difference_update(s2)
# 功能: 删除集合s1中和s2相同的元素,s1发生变化,s2不变,查看s1
s1.difference_update(s2)
print(f"集合s1消除 和 s2 的差集后为:{s1}")
# 7.求并集
s3 = s1.union(s2)
print(s3)
# 8.统计集合元素的个数
count = len(s3)
print("合并后的s3的元素个数是:%d 个" % count)
# 9.集合的遍历
for item in s3:
    print(item)

四、字典dict

# 字典 dict
# 语法: {k1:v1, k2:v2, ... , kn:vn}
# 1.定义
# 不允许重复的key,如果出现了重复的key,新值会覆盖掉旧值
my_dict = {"lwang":100, "panda":90, "jazz":80, "lwang":70}
print(my_dict)
print(my_dict["lwang"])
print(my_dict["panda"])
print(my_dict["jazz"])
# 2.字典嵌套
person_info = {
    "lwang":{"age":20, "addr":"beijing"},
    "lyz":{"age":18, "addr":"beijing"},
    "darren":{"age":30, "addr":"changsha"},
}
print(person_info)
print("lyz's age = %d " % person_info["lyz"]["age"])
# 3.添加元素
my_dict["lyz"] = 100
print(my_dict)
# 4.修改指定元素
my_dict["lwang"] = 149
print(my_dict)
# 5.删除元素
score = my_dict.pop("lwang")
print(score)
print(my_dict)
# # 6.清空字典
# my_dict.clear()
# print(my_dict)
# 7.获取全部的key
keys = my_dict.keys()
print(keys)
#  8.遍历
for key in keys:
    print(f"key:value = {key}:{my_dict[key]}")
# 9.字典元素的个数
num = len(my_dict)
print("my_dict 元素的个数是:%d " % num)


推荐一个零声学院免费教程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,点击立即学习:

相关文章
|
2月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
293 10
|
4天前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
1月前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
|
2月前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
30天前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
16 0
|
2月前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
2月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
3月前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
107 1
|
3月前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
91 3
|
3月前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
152 0

热门文章

最新文章