python(内置容器)

关于容器

程序 = 数据结构+算法

    容器:

        >.list-列表

        >.tuple-元组

        >.dict-字典

        >.set-集合

一、列表(list)

· 有序、可重复容器模型,可以存储任意类型

· 使用 中括号创建[ ]

· 类型为list

· 底层为线性表 - 链表实现

1.1 列表的创建

· 1.直接赋值

list1 = [1,2,3,4,5,6]
print(list1 , type(list1))

·2.list() 函数创建

list2 = list([1, 2, 3, 4, 5, 6])

·3.创建空列表

list3 = []
print(list3)
list4 = list()
print(list4)

1.2 列表的访问

·线性结构可以通过下标访问,下标从0开始

# --- 通过下标访问 可以正序访问(0~n-1),可以倒序访问 (-1~-n),超出范围报错
print(list1[0])
print(list1[-6]) #倒数第六

1.3 列表的遍历

·1.for循环遍历

for i in list1:
    print(i)
for i in range(len(list1)): # range 函数创建(i,i+1,i+2,i+3....i+n)的整数序列
    print(list[i])

·2.while循环遍历

index = 0 # 创建索引
while index < len(list1):
    print(list1[index])
    index += 1

1.4列表常用方法

1.5 列表其他操作

· 加

· 乘

· 判断某个元素是否在列表中

numbers1 = [11,22,33]
print(numbers1 + numbers1) # 加
print(numbers1 * 3) # 乘
print(11 in numbers1) # 判断

1.6 嵌套列表

1.列表中的元素可以为任意元素

res = ["zhangsan",18,True,[80,90,100]]
print(res)
print(res[3]) # 访问学生成绩
print(res[3][0]) # 访问学生语文成绩

2.访问嵌套列表中内容时,采用二维的索引获取

    遍历二维列表

for student in res:
    if type(student) == list:
        for score in student:
            print(score) # [80,90,100]

1.9 列表推导式

列表推导式是一种简洁的语法,用于创建新的列表。它允许我们在一个单独的表达式中定义一
个列表,并且可以根据已有的列表或其他可迭代对象进行筛选、转换或过滤。
列表推导式的一般语法如下:
[expression for item in iterable if condition]
其中,expression是对item的操作或转换,item是可迭代对象中的每个元素,iterable是
可迭代对象(如列表、元组、集合等),condition是一个可选的条件表达式,用于筛选元素
new_list = [x + 3 for x in list2 if x >= 2]
print(new_list)

二、元组(tuple)

· 有序、可重复但不可更改容器模型

· 使用圆括号“ ()” 创建

· 类型为tuple

2.1 创建元组

1.创建空元组

tuple1 = ()
print(tuple1)
print(type(tuple1)) #tuple <class 'tuple'>

2.创建空元组2

tuple2 = tuple()
print(tuple2)
print(type(tuple2))

3.创建有元素的元组

tuple2 = (1,2,2,3,"a",[1,2,3])
print(tuple2)

2.2元组的元素不能被改变 ---作用:就是在使用函数传递参数时,元组比列表快!

#tuple[3]="b" #TypeError:'tuple' object does not support item assignment

2.3元组的常用方法(函数)API(Application programming Interface)应用程序接口

1.count(任意元素值)->当前元素在元组中的个数

print(tuple2.count(2))

2.index(任意元素)—>当前元素第一次出现的索引值

print(tuple2.index(2))

2.4元组和列表的区别

Python中的元组(tuple)和列表(list)是两种常用的数据结构,它们有以下几点区别:
可变性:元组是不可变的,而列表是可变的。这意味着元组的元素不能被修改、添加或删除,
而列表可以进行这些操作。
语法表示:元组使用圆括号 () 表示,列表使用方括号 [] 表示。
使用场景:由于元组的不可变性,它适合用于存储不可变的数据,如一组常量值或者函数的返
回值。而列表则适合用于存储可变的数据集合,如一组需要频繁修改的数据。
性能:由于元组的不可变性,它在某些情况下比列表更加高效。例如,在函数调用时,传递元
组比传递列表更快。
方法和操作:列表有更多的内置方法和操作,如添加元素、删除元素、切片等。而元组只有一
些基本的方法,如索引和计数

三、字典(dict)

· 无序 , 可变容器模型
· 元素为键值对 (K - V) 的形式
· 使用花括号 “{}” 创建
· key 不可重复, value 可重复
·  类型为 dict

       1.字典创建

            -格式:{}   | dict()

        2.访问字典

            !!!所谓操作字典,主要操作的是字典的键

                - 键唯一

                - 键无序

                - 底层是散列数组 + 链表 + 红黑树完成

        3.字典的常用API

        4.字典的遍历

        5.生成字典

3.1 创建空字典

dict1 = {}
print(dict1)
print(type(dict1)) #<class 'dict'>
dict2 = dict()
print(type(dict2))

3.2 创建元素字典

dict3 = {"username" : "zhangsan","password" : "123","age" : "18","salary" : 10000}
print(dict3)

3.3 访问字典中的元素

1.通过中括号[键] -> 值、

print(dict3["username"]) #zhangsan

2.get方法

print(dict3.get("username")) #zhangsan

3.操作键改变值,键相同则覆盖值,否则添加新的键-值对

dict3["username"] = "list"
dict3["location"] = "西安市"
print(dict3) #结果zhangsan变成list,末尾添加location  西安市

3.4 字典的常用api

1.keys   获取所有的键k

print(dict3.keys())

2.values 获取所有的值v

print(dict3.values())

3.items 获取所有的键值对

print(dict3.items())

3.5 字典的遍历(获取/操作所有的元素值)

1.遍历所有的键

for key in dict3.keys():
    print("键" , key , "--->" , "值:" , dict3.get(key))

2.遍历所有的键第二种方式

for key in dict3:
    print("键", key ,"--->" , "值" ,dict3.get(key))

3.遍历所有值

for value in dict3.values():
    print("值:", value)

4.pop:取出键对应的值,原字典发生改变

print("pop后的结果:" ,dict3.pop("location"))
print(dict3)

3.6 字典的生成

1.dict.setdefault 获取字典中指定键的值

如果该键不存在于字典中,则将其插入字典并返回指定的默认值。如果键已经存在,则返回其当前值。

list_res = ["name" , "age" , "height"]
dict3.setdefault("height",197) #TypeError: descripton'setdefault'for 'dict"obiects doesn't apply to a 'list' object
print(dict3) #{'username':'lisi','password':'123','age':18,'salary': 10000,'height': 197)

2.zib内置函数

res1 = ["name" , "age" , "height"]
res2 = ["zhangsan" , 18 , "200" ,1000]
#zip函数  strict参数为True时,列表1和列表2长度必须一致
#dict5 = dict(zip(res1,res2,strict = True)) #ValueError: zip()argument 2 is longer than argument 1
dict5 = dict(zip(res1 , res2))
print(dict5) #{'name': 'zhangsan', 'age': 18, 'height': '200'}

四、集合(set)

 set --- 集合 --- set操作等于操作字典的键、

       -set是无序

         1.创建set

            -{}

            - set() -转化类型的功能

         2.访问set

         3.常用API

类型为 set
可以作为字典的 key
类似于数学中的集合,存在交集,并集,差集等

4.1 创建set

1.创建空set

set1 = set()
print(type(set1)) 

2.创建有元素的set

set2 = {1 , 2 , 3 ,"zhangsan"}
print(set2)
print(type(set2))
set3 = set("zhangsan")
print(set3)
print(type(set3))

4.2 访问set元素,通过遍历

for item in set2:
    print(item)

案例:

字符串去重(用户输入一个字符序列,去除输入内容的重复元素)
username_input = input("请输入一段内容:")
print(set(username_input))

4.3 set的常用API

set3 = {1,2,3,4,5,6,7}
set4 = {8,9,5,6,7}

1.difference 差集 A-B ---> 去除A与B重复内容

set_res = set3.difference(set4) #1,2,3,4
print(set_res)

2.intersection 取相同元素

set_res = set3.intersection(set4)
print(set_res) #{5, 6, 7}

3.union 并集

set_res = set3.union(set4)
print(set_res) #{1, 2, 3, 4, 5, 6, 7, 8, 9}

4.add添加元素,如果重复则覆盖

set4.add(10)
print(set4) #{5, 6, 7, 8, 9, 10}

五、字符串(str)

字符串是由 Unicode 码构成
不可变序列 , 一旦创建就不能对其修改,可以索引、切片、获取等

5.1 字符串的创建

1.直接赋值

# 单引号创建
# str1 = 'i'm a teacher'
str1 = 'i am a teacher'
print(str1)
# 双引号创建
str2 = "i'm a teacher"
print(str2)
# 三引号创建
str3 = """i'm a teacher"""
print(str3)
str4 = """
静夜思
李白
窗前明月光,
疑是地上霜,
举头望明月,
低头思故乡。
"""
print(str4)

2.使用str()

# 使用str()创建
str5 = str("i'm a teacher")
print(str5)
# 使用str()将其他类型转为字符串
res = True
print(res,type(res))
str6 = str(res)
print(str6,type(str6))

5.2 字符串的索引

正序索引范围: 0~n-1
逆序索引范围 : -1~-n
str7 = str("zhangsan")
print(str7[0]) # 取第一个字符
print(str7[len(str7)-1]) # 取最后一个字符 len表示获取字符串长度
print(str7[-1])
print(str7[-len(str7)])
# print(str7[len(str7)]) IndexError: string index out of range

5.3字符串切片

取字符串的一部分
切片格式
[start:end]
[start:end:step] step:步长
str8 = "www.baidu.com"
print(str8[:]) # 所有
print(str8[4:])
print(str8[:9]) # 前包后不包
print(str8[4:9])
print(str8[::])
print(str8[::2])

5.4 字符串的遍历

for循环遍历

for s in str8:
print(s)

5.5字符串格式化

print("name:%s,age:%d,score:%f。" % ("zhangsan", 28, 98.5))
print("name:%(name)s , age:%(age)d" % {'name': "zhangsan", "age": 28})
print("name:{},age:{}".format("zhangsan", 28))

5.6 字符串运算符

print("zhangsan" + "True")
# print("zahngsan" + True) TypeError 必须类型匹配

5.7字符串函数

print(repr("zhangsan"))
print(ord("z"))
print(chr(122))

5.8字符串常用方法

测试

# 8.字符串的常用API(application programming inteface) 应用程序接口
# 转换字母
res_str = " I Love Python "
print(res_str.upper())
print(res_str.lower())
print(res_str.swapcase())

# 去除两边空格 zhangsan
print(res_str.strip())

# center
print(len(res_str)) #15
print(res_str.center(18,"-"))

# find 如果找不到返回-1
print(res_str.find("Love"))

# indexof 返回当前字符第一次出现的索引位置
print(res_str.index("L"))

# replace("需要替换的字符","替换字符")
print("tmd,666".replace("tmd","***"))

# "连接符".join(源字符串)
print("-".join(res_str))

# count
print(res_str.count("o"))

# 判断开头和结尾
print("www.baidu.com".startswith("www"))
print("www.baidu.com".endswith("com"))

# 截取字符
print("www.oracle.com".split(".")[1])

# 将字符串分为三部分
print(res_str.partition("Love"))

# maketrans()
s1 = "aoeiu"
s2 = "12345"
res = str.maketrans(s1,s2)
print(res)

# translate
s3 = "This is a String Example ... wa ou wa ou wa ou "
# Th4s 4s 1 Str4ng Ex1mpl3 ... w1 25 w1 25 w1 25
print(s3.translate(res))

  • 26
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值