【Python学习】——数据容器

零、数据容器

概念:一种可以存储多个元素的Python数据类型

种类:list(列表)、tuple(元组)、str(字符串)、set(集合)、dict(字典)

一、列表

特点

  1. 可以容纳多个元素(上限2^63-1个)
  2. 可以容纳不同类型的元素
  3. 数据是有序存储的
  4. 允许数据重复存在
  5. 可以修改、删除、增加元素等

基本语法

字面量:[元素1,元素2,元素3,...]

定义变量:变量名称 = [元素1,元素2,元素3,...]

定义空列表:变量名称  =  []

                      变量名称 = list()

  • list一次可以储存多个数据,且可以储存不同的数据类型 。
name_list = ["momo", "sana", "mina"]
print(name_list)
print(type(name_list))

my_list = ["coconut", 902, "singapore"]
print(my_list)
print(type(my_list))

 运行结果:

  • 支持嵌套列表 
mix_list =[[1, 2, 3], [4, 5, 6]]
print(mix_list)
print(type(mix_list))

运行结果:

下标索引

语法:列表[标号]

  • 正向索引

第一个元素下标为0

name_list = ["momo", "sana", "mina"]
print(name_list[0])
print(name_list[1])
print(name_list[2])

 

  • 反向索引

最后一个元素下表为-1

name_list = ["momo", "sana", "mina"]
print(name_list[-1])
print(name_list[-2])
print(name_list[-3])

  • 嵌套列表的下标索引

列表[外层标号][内层标号] 

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

常用操作

  • 查找某元素的下标

列表.index(元素)

my_list = ["nayeon", "sana", "tzuyu"]
index = my_list.index("sana")
print(f" The index is {index}")

如果被查找的元素不存在,会报错。 

  • 修改特定位置的元素值

列表[下标] = 值

my_list = ["nayeon", "sana", "tzuyu"]
my_list[0] = "mina"
print(f"After modification:{my_list} ")

 

  • 插入元素

列表.insert(下标,元素) 

在指定的下标位置,插入指定的元素

my_list.insert(1, "nayeon")
print(f"After insertion:{my_list} ")

 

  • 追加元素

列表.append(元素),将指定元素,追加到列表的尾部

my_list.append("dahyun")
print(f"After appending:{my_list} ")

列表.extend(其他数据容器)

将其他数据容器的内容取出,依次加入列表尾部。

your_list = {"momo", "jihyo"}
my_list.extend(your_list)
print(f"After extending:{my_list}")

  • 删除元素

 del 列表[下标]

列表.pop(下标)

del my_list[4]
my_list.pop(1)
print(f"After delete:{my_list}")

 

  • 删除某元素在列表中的第一个匹配项

列表.remove(元素)

my_list = ["mina", "sana", "tzuyu", "sana"]
my_list.remove("sana")
print(f"After removing:{my_list}")

  • 清空列表

列表.clear()

my_list.clear()
print(f"After clear:{my_list}")

  • 统计某元素在列表内的数量

列表.count(元素)

my_list = ["momo", "mina", "sana", "momo", "tzuyu"]
count = my_list.count("momo")
print(f"The number of momo is {count}")

  • 统计列表中总共有多少元素

len(列表)

my_list = ["momo", "mina", "sana", "momo", "tzuyu"]
count = len(my_list)
print(f"The number of elements in my_list is {count}")

遍历

while循环

my_list = ["momo", "mina", "sana", "momo", "tzuyu"]
index = 0
while index < len(my_list):
    element = my_list[index]
    print(f"{element}")
    index += 1

for循环

my_list = ["momo", "mina", "sana", "momo", "tzuyu"]
index = 0
for index in range(0,len(my_list)):
    element = my_list[index]
    print(f"{element}")

二、元组

元组一旦定义完成,就不可被修改

基本语法

字面量:(元素,元素,......,元素)

定义变量:变量名=(元素,元素,......,元素)

定义空元组:变量名称 = ()

                      变量名称 = tuple()

  • 可以存储不同的数据类型
  • 下标访问规则和list一样
  • 定义单个元素的元组时,元素后面必须要加一个逗号
t1 = (2015, "twice", 1020)
t2 = ()
t3 = tuple()
t4 = ("once",)
print(f"{type(t1)},{t1}")
print(f"{type(t2)},{t2}")
print(f"{type(t3)},{t3}")
print(f"{type(t4)},{t4}")

元组嵌套

t5 = ((1, 2, 3), (4, 5, 6))
print(f"{type(t5)},{t5}")
print(f"{t5[1][2]}")

常用操作

  • 查找某元素的下标

元组.index(元素)

  • 统计某元素在列表内的数量

元组.count(元素)

  • 统计列表中总共有多少元素

len(元组)

t1 = (9, 5, 7, 8, 4, 3, 66, 37, 49, 10, 8)
index = t1.index(66)
count = t1.count(8)
num = len(t1)
print(f"The index of 66 is {index}")
print(f"The number of 8 is {count}")
print(f"The number of elements is {num}")

遍历

while循环

i = 0
while i < len(t1):
    print(f"{t1[i]}")
    i += 1

for循环

for x in range(0, len(t1)):
    print(f"{t1[x]}")

注意事项

  1. 不可以修改元组的内容,否则会报错
  2. 可以修改元组内list的内容
t1 = (9, 5, 7, 8, 4, ["twice", "jyp"])
t1[5][1] = "once"
print(f"{t1}")

三、字符串

字符串时字符的容器,一个字符串可以存放任意数量的字符

下标索引

从前向后,从0开始

从后向前,从-1开始

my_str = "one in a million"
value1 = my_str[2]
value2 = my_str[-7]

# value1 = e, value2 = m

字符串不支持修改 

常用操作

  • 查找某元素的下标

字符串.index(字符串)

my_str = "one in a million"
value = my_str.index("in")
print(f"{value}")

# value = 4
  •  字符串的替换

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

注:将字符串全部的字符串1替换为字符串2,不是修改字符本身,而是得到了一个新的字符串

my_str = "one in a million"
new_my_str = my_str.replace("one", "ONE")
print(f"The new string is {new_my_str}")

  • 字符串的分割

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

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

       字符串本身不变,而是得到了一个列表对象

my_str = "one in a million"
my_str_list = my_str.split(" ")
print(f"After splitting:{my_str_list},type is {type(my_str_list)}")

  •  字符串的规整操作 

去前后空格

字符串.strip()

去前后指定字符串

字符串.strip(字符串)

my_str = " one in a million "
new_my_str = my_str.strip()  # 不传入参数,去除首尾空格
print(f"{new_my_str}")

my_str = "12one in a million21"
new_my_str = my_str.strip("12")
print(f"{new_my_str}")

  • 统计某元素在字符串内的数量

字符串.count(字符串)

  • 统计列表中总共有多少元素

len(字符串)

遍历

支持while循环和for循环

四、序列

定义

序列是指内容连续、有序,可使用下标索引的一类数据容器

列表、元组、字符串均可以视为序列

切片

从一个序列中,取出一个子序列

语法:序列[起始下标:结束下标:步长]

  • 起始下标表示从何处开始,可以留空,留空视作从头开始
  • 结束下标(不含)表示何处结束,可以留空,留空视作截取到结尾
  • 步长表示依次取元素的间隔
    • 步长1表示一个个取元素
    • 步长2表示每次跳过1个元素取
    • 步长N表示每次跳过N-1个元素取
    • 步长为负数表示反向取(起始下标和结束下标也要反向标记)

此操作不会影响序列本身,而是得到一个新的序列

my_list = [0, 1, 2, 3, 4, 5, 6]
result1 = my_list[1:4]
print(f"result1:{result1}")

my_tuple = (0, 1, 2, 3, 4, 5, 6)
result2 = my_tuple[:]
print(f"result2:{result2}")

my_str = "01234567"
result3 = my_str[::2]
print(f"result3:{result3}")

my_str = "01234567"
result4 = my_str[::-1]  # 等同于将序列反转了
print(f"result4:{result4}")

my_list = [0, 1, 2, 3, 4, 5, 6]
result5 = my_list[3:1:-1]
print(f"result5:{result5}")

my_tuple = (0, 1, 2, 3, 4, 5, 6)
result6 = my_tuple[::-2]
print(f"result6:{result6}")

五、集合

基本语法

字面量:{元素,元素,元素......,元素}

集合变量:变量名称={元素,元素,......,元素}

空集合:变量名称=set()

 集合元素不能重复。

my_set = {"mina", "sana", "momo", "sana"}
print(f"{my_set}")

集合是无序的,不支持下标访问。

常用操作

  • 添加新元素

集合.add(元素)

my_set = {"mina", "sana", "momo", "sana"}
print(f"{my_set}")
my_set.add("nayeon")
print(f"{my_set}")
my_set.add("momo") # 去重
print(f"{my_set}")

  • 移除元素

集合.remove(元素)

my_set = {"mina", "sana", "momo", "sana"}
print(f"{my_set}")
my_set.remove("momo")
print(f"{my_set}")

  •  随机取出一个元素

集合.pop()

my_set = {"mina", "sana", "momo"}
print(f"{my_set}")
element = my_set.pop()
print(f"element is {element}")

  • 清空集合

集合.clear()

  •  取两个集合的差集

集合1.difference(集合2)

取出集合1和集合2的差集 

set1 = {1, 2, 3}
set2 = {2, 5, 6}
set3 = set1.difference(set2)
print(f"set3 is {set3}")
print(f"set1 and set2 remain stay:set1={set1}.set2={set2}")

  • 消除2个集合的差集

集合1.difference_update(集合2) 

在集合1内删除和集合2相同的元素,集合1被修改,集合2不变 

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

  • 2个集合合并

集合1.union(集合2)

产生一个新的集合,集合1和集合2不变 

set1 = {1, 2, 3}
set2 = {2, 5, 6}
set3 = set1.union(set2)
print(f"set3 is {set3}")

  • 统计元素数量

len(元素)  #自动去重

  •  集合的遍历

不支持下标索引,所以不支持while循环

可以用for循环

set1 = {1, 2, 3, 4, 5, 6}
for element in set1:
    print(element)

六、字典

按【key】找出【value】

基本语法

存储的元素是一个个的键值对,key不可以重复

字面量:{key:value, key:value,......,key:value}

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

空字典:my_dict={}

              my_dict = dict()

 

twi = {"nayeon":1995, "sana":1996, "tzuyu":1999}
my_dict1 = {}
my_dict2 = dict()
print(twi, type(twi))
print(my_dict1, type(my_dict1))
print(my_dict2, type(my_dict2))

获取数据 

twi = {"nayeon":1995, "sana":1996, "tzuyu":1999}
num1 = twi["nayeon"]
num2 = twi["tzuyu"]
num3 = twi["sana"]
print(num1)
print(num2)
print(num3)

 

 字典的key和value可以是任意数字类型(key不可为字典)

  • 嵌套字典
girl_group = {
    "twice": {
        "nayeon": 1995,
        "sana": 1996,
        "tzuyu": 1999
              },
    "blackpink": {
        "jennie": 1996,
        "lisa": 1997
              }
    }

print(f"birth year of girl group member:{girl_group}")
year = girl_group["twice"]["nayeon"]
print(f"birth year of nayeon:{year}")

 

常用操作 

  • 新增元素

字典[key]=value

  • 更新元素

字典[key]=value

字典key不可以重复,所以对已存在的key执行上述操作,就是更新value值

 

twice = {"nayeon": 1995, "sana": 1996, "tzuyu": 1999}
print(twice)
twice["momo"] = 1996
twice["nayeon"]=1999
print(twice)

 

  • 删除元素

字典.pop(key)

twice = {"nayeon": 1995, "sana": 1996, "tzuyu": 1999}
kid = twice.pop("tzuyu")
  • 清空元素

字典.clear() 

  • 获取全部的key

字典.keys() 

  • 统计字典内的元素数量 

len(字典)

遍历

法1:通过获取全部的key来完成遍历

twice = {"nayeon": 1995, "sana": 1996, "tzuyu": 1999}
members = twice.keys()  # 获取全部的keys 
for key in members:
    print(f"member:{key}")
    print(f"birth year:{twice[key]}")

 法2:直接对字典进行for循环,每一次循环都是直接得到key

twice = {"nayeon": 1995, "sana": 1996, "tzuyu": 1999}
for key in twice:
    print(f"member:{key}")
    print(f"birth year:{twice[key]}")

 

七、总结

cr:黑马程序员

八、通用操作

  • 遍历

  • 统计功能

my_list = [1, 2, 3, 4, 5]
my_tuple = (1, 2, 3, 4, 5)
my_str = "abcdefg"
my_set = {1, 2, 3, 4, 5}
my_dict = {"key1": 1, "key2": 2, "key3": 3, "key4": 4, "key5": 5 }

print(max(my_list))
print(max(my_tuple))
print(max(my_str))
print(max(my_set))
print(max(my_dict))

 

  • 通用类型转换

 

  • 通用排序功能

reverse是默认参数,默认是false(正序),true是逆序

reverse:反转

排完序后会变成列表对象(字典会丢失value)

------------------------------------------------------------全文完------------------------------------------------------------

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值