Python学习笔记(4)

本文详细介绍了Python中四种主要的高级变量类型:列表、元组、字典和字符串的使用方法,包括取值、修改、增加、删除、统计、排序、反转等操作,以及它们之间的转换和遍历。此外,还探讨了关键字、函数和方法的区别,并提供了各种应用场景的实例,如列表的循环遍历、元组的不可变性、字典的增删改查和字符串的格式化输出。
摘要由CSDN通过智能技术生成

目录

高级变量

一、列表(数组)

1.1 取值和取索引

1.2修改

1.3 增加

1.4 删除

1.5 统计数据

1.6 列表的排序和反转

1.7 关键字、函数和方法的区别

1.8 循环遍历

二、元组

2.1 元组的定义

2.2 元组的基本使用

2.3 循环遍历

2.4 应用场景

2.5 元组和列表之间的转换

三、字典

3.1 字典的定义

3.2 字典的增删改查

3.3 字典的其他操作

3.4 循环遍历

3.5 应用场景

四、字符串

4.1 字符串的定义

4.2  字符串的统计操作

4.3 判断类型

4.4 字符串的查找和替换

4.5  文本对齐

4.6  拆分和合并

4.7  字符串的切片


高级变量

一、列表(数组)

>list(列表)是Python中使用最频繁的数据类型,在其它语言中通常叫做数组;专门用于存储一串信息;列表用"[]"定义,数据之间使用“,”分隔;列表的索引(下标)从0开始;从列表中取值时,如果超出索引范围,程序会报错。

>通常保存相同类型的数据

语法:

name_list = ["zhangsan","lisi","wangwu"]

1.1 取值和取索引

>取值

print(name_list[2])

wangwu

>取索引(若传递的数据不再列表中会报错)

print(name_list.index("wangwu"))

2

1.2修改

name_list[1] = "李四"

name_list = ["zhangsan","李四","wangwu"]

>列表指定的索引超出范围,程序会报错。

1.3 增加

>append 方法可以向列表的末尾追加数据

name_list.append("王小二")

name_list = ["zhangsan","李四","wangwu","王小二"]

>insert 方法可以在列表的指定索引位置插入数据

name_list.insert(1,"小美眉")

name_list = ["zhangsan","小美眉","李四","wangwu","王小二"]

>extend 方法可以把其他列表中的完整内容追加到当前列表的末尾

temp_list = ["孙悟空","猪八戒","沙和尚"]
name_list.extend(temp_list)

name_list = ["zhangsan","李四","wangwu","王小二","孙悟空","猪八戒","沙和尚"]

1.4 删除

>remove 方法可以从列表中删除指定的数据;从列表中删除第一个出现的指定的数据

name_list.remove("wangwu")
print(name_list)

['zhangsan', '小美眉', '李四', '王小二', '孙悟空', '猪八戒', '沙和尚']

>pop方法默认可以把列表中最后一个元素删除

name_list.pop()
print(name_list)

['zhangsan', '小美眉', '李四', '王小二', '孙悟空', '猪八戒']

> clear方法可以清空列表

name_list.clear()
print(name_list)

[]

>使用del关键字删除列表元素

del 关键字本质上是用来将一个变量从内存中删除的。如果使用del关键字将变量从内存中删除,后序的代码就不能再使用这个变量了。

1.5 统计数据

> len 函数可以统计列表中元素的总数

name_list = ["张三","李四","王五","王小二","张三"]

list_len = len(name_list)
print("列表中包含 %d 个元素" % list_len)

列表中包含 5 个元素

> count 方法可以统计列表中某个数据出现的次数

count = name_list.count("张三")
print("张三出现了 %d 次" % count)

张三出现了 2 次

1.6 列表的排序和反转

>升序

name_list = ["zhangsan","lisi","wangwu","wangxiaoer"]
num_list = [6, 8, 4, 1, 10]

# 升序
name_list.sort()
num_list.sort()

['lisi', 'wangwu', 'wangxiaoer', 'zhangsan']
[1, 4, 6, 8, 10]

>降序

name_list.sort(reverse=True)
num_list.sort(reverse=True)


['zhangsan', 'wangxiaoer', 'wangwu', 'lisi']
[10, 8, 6, 4, 1]

>逆序(反转)

name_list.reverse()
num_list.reverse()


['wangxiaoer', 'wangwu', 'lisi', 'zhangsan']
[10, 1, 4, 8, 6]

1.7 关键字、函数和方法的区别

 >关键字是Python内置的、具有特殊意义的标识符

关键字后面不需要使用括号。

>函数封装了独立功能,可以直接调用

函数名(参数)

>方法

和函数类似,同样是封装了独立的功能。方法需要通过对象来调用,表示针对这个对象要做的操作。

对象.方法名(参数)

1.8 循环遍历

>遍历就是从头到尾依次从列表中获取数据。在循环体内部针对每一个元素,执行相同的操作。

>在Python中为了提高列表的遍历效率,专门提供的迭代iteration遍历

>使用for 就能够实现迭代遍历

name_list = ["张三","李四","王五","王小二"]
"""
顺序的从列表中一次获取数据,每一次循环过程中,数据都会保存
在my_name 这个变量中,在循环体内部可以访问到当前这一次和获取到的数据
for my_name in 列表变量:
    print("我的名字叫 %s " % my_name)
"""
# 使用迭代遍历列表
for my_name in name_list:
    print("我的名字叫 %s " % my_name)


我的名字叫 张三 
我的名字叫 李四 
我的名字叫 王五 
我的名字叫 王小二 

二、元组

2.1 元组的定义

>Tuple(元组)与列表类似,不同之处在于元组的元素不能修改。元组表示多个元素组成的序列;元组在Python开发中,有特定的应用场景。

>用于存储一串信息,数据之间使用","分隔

>元组用"()"定义

>元组的索引从0开始。索引就是数据在元组中的位置编号。

info_tuple = ("zhangsan",18,1.75)

>创建空元组

empty_tuple = ()

>元组中只包含一个元素时,需要在元素后面添加逗号

info_tuplt = (50,)

2.2 元组的基本使用

>取值和取索引

info_tuple = ("zhangsan",18,1.75,"zhangsan")

# 1.取值和取索引
print(info_tuple[0])
# 已经知道数据的内容,希望知道该数据在元组中的索引
print(info_tuple.index("zhangsan"))


zhangsan
0

>统计计数

print(info_tuple.count("zhangsan"))
# 统计元组中包含元素的个数
print(len(info_tuple))


2
4

2.3 循环遍历

>取值就是从元组中获取存储在指定位置的数据

>遍历就是从头到尾依次从元组中获取数据

info_tuple = ("zhangsan",18,1.75)

# 使用迭代遍历元组
for my_info in info_tuple:
    # 使用格式字符串拼接 my_info这个变量不方便
    # 因为元组中通常保存的数据类型是不同的
    print(my_info)

>在Python中可以使用for循环遍历所有非数字类型的变量:列表、元组、字典以及字符串

2.4 应用场景

>尽管可以使用for in遍历元组

>应用场景:

函数的参数和返回值,一个函数可以接受任意多个参数,或者一次返回多个数据;

格式字符串,格式化字符串后面的()本质上就是一个元组;

让列表不可以被修改,以保护数据安全。

info_tuple = ("小明",21,1.85)

# 格式化字符串后面的“()”本质上就是元组
print("%s 年龄是 %d 身高是%.2f" % info_tuple)

info_str = "%s 年龄是 %d 身高是%.2f" % info_tuple

print(info_str)


小明 年龄是 21 身高是1.85
小明 年龄是 21 身高是1.85

2.5 元组和列表之间的转换

>使用list函数可以把元组转换成列表

list(元组)

>使用tuple函数可以把列表转换成元组

tuple(列表)

三、字典

3.1 字典的定义

>dictionarry(字典)是除列表以外Python之中最灵活的数据类型;字典同样可以用来存储多个数据;通常用于描述一个物体的相关信息

>与列表的区别

列表是有序的对象集合;

字典是无序的对象集合;

>字典用{}定义;字典使用键值对存储数据,键值对之间使用“,”分隔

键key是索引;值value是数据;键和值之间使用:分隔;键必须是唯一的;值可以取任何数据类型,但键只能使用字符串、数字或元组。

# 字典是一个无序的数据集合,使用print函数输出字典时,
# 通常输出的顺序和定义的顺序是不一致的。
xiaoming = {"name":"小明",
            "age":18,
            "gender":True,
            "height":1.75,
            "weight":75.5}

print(xiaoming)


{'name': '小明', 'age': 18, 'gender': True, 'height': 1.75, 'weight': 75.5}

3.2 字典的增删改查

>取值

xiaoming_dict = {"name": "小明"}

# 1.取值
print(xiaoming_dict["name"])
# 在取值的时候,如果指定的key不存在,程序会报错

小明

> 增加和修改

# 2.增加/修改
# 如果key不存在,会新增键值对
xiaoming_dict["age"] = 18
print(xiaoming_dict)
# 如果key存在,会修改已经存在的键值对
xiaoming_dict["name"] = "小小明"
print(xiaoming_dict)

{'name': '小明', 'age': 18}
{'name': '小小明', 'age': 18}

>删除

# 3.删除
#在删除指定键值对时,如果指定的key不存在,程序会报错
xiaoming_dict.pop("name")
print(xiaoming_dict)


{'age': 18}

3.3 字典的其他操作

>统计键值对的数量

xiaoming_dict = {"name": "小明",
                 "age": 18}

# 1.统计键值对数量
print(len(xiaoming_dict))


2

>合并字典

# 2.合并字典
temp_dict = {"height": 1.75,
             "age": 20}
# 如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对
xiaoming_dict.update(temp_dict)
print(xiaoming_dict)


{'name': '小明', 'age': 20, 'height': 1.75}

>清空字典

# 3.清空字典
xiaoming_dict.clear()
print(xiaoming_dict)

{}

3.4 循环遍历

>遍历就是依次从字典中获取所有键值对

xiaoming_dict = {"name": "小明",
                 "qq": "123456",
                 "phone": "10086"}
# 迭代遍历字典
# 变量k是每一次循环中,获取到的键值对的key
for k in xiaoming_dict:
    print("%s - %s" % (k,xiaoming_dict[k]))


name - 小明
qq - 123456
phone - 10086

3.5 应用场景

 >尽管可以使用for in 遍历字典

>使用多个键值对,存储描述一个物体的相关信息——描述更复杂的数据信息;

  将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理。

# 使用多个键值对,存储描述一个物体的相关信息——描述更复杂的数据信息
# 将多个字典放在一个列表中,再进行遍历
card_list = [
    {"name": "张三",
     "qq": "23456",
     "phone": "110"},
    {"name": "李四",
     "qq": "54321",
     "phone":"10086"}
]

for card_info in card_list:
    print(card_info)


{'name': '张三', 'qq': '23456', 'phone': '110'}
{'name': '李四', 'qq': '54321', 'phone': '10086'}

四、字符串

4.1 字符串的定义

>字符串就是一串字符,是编程语言中表示文本的数据类型

>在Python中可以使用一对双引号""或者一对单引号''定义一个字符串;虽然可以使用\"或者\'做字符串的转义,但是在实际开发中:

如果字符串内部需要使用",可以使用'定义字符串;

如果字符串内部需要使用',可以使用"定义字符串;

>可以使用索引获取一个字符串中指定位置的字符,索引计数从0开始;也可以使用for循环遍历字符串中的每一个字符。

>大多数编程语言都是用"来定义字符串

str1 = "hello python"
str2 = '我的外号是"大西瓜"'

print(str2)
print(str1[6])

for char in str2:

    print(char)


我的外号是"大西瓜"
p
我
的
外
号
是
"
大
西
瓜
"

4.2  字符串的统计操作

hello_str = "hello hello"

# 1. 统计字符串长度
print(len(hello_str))

# 2. 统计某一个子字符串出现的次数
print(hello_str.count("llo"))
print(hello_str.count("abc"))

# 3.某一个子字符串出现的位置
print(hello_str.index("llo"))
# 注意:如果使用index方法传递的子字符串不存在,程序会报错
# print(hello_str.index("abc"))


11
2
0
2

4.3 判断类型

>判断空白字符。\t,\n,\r被认为是空白字符

# 1.判断空白字符
spac_str = "     \t\n\r"

print(spac_str.isspace())

True

>判断字符串中是否包含数字

都不能判断小数;Unicode字符串;中文数字

num_str = "一千零一"

print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())

一千零一
False
False
True

num_str = "1"

print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())

1
True
True
True

num_str = "1.1"

print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())

1.1
False
False
False

 

 

4.4 字符串的查找和替换

>判断是否以指定字符串开始

hello_str = "hello world"

# 1. 判断是否以指定字符串开始
print(hello_str.startswith("Hello"))

False

>判断是否以指定字符串结尾

# 2. 判断是否以指定字符串结束
print(hello_str.endswith("world"))

True

>查找指定字符串

index同样可以查找指定的字符串在大字符串中的索引;

index如果指定的字符串不存在,会报错;

find如果指定的字符串不存在,会返回-1;

# index同样可以查找指定的字符串在大字符串中的索引
print(hello_str.find("llo"))
# index如果指定的字符串不存在,会报错
# find如果指定的字符串不存在,会返回-1
print(hello_str.find("abc"))

2
-1

>替换字符串

 replace方法执行完成之后,会返回一个新的字符串
注意:不会修改原有字符串的内容

# replace方法执行完成之后,会返回一个新的字符串
# 注意:不会修改原有字符串的内容
print(hello_str.replace("world","python"))
print(hello_str)

hello python
hello world

 

 

4.5  文本对齐

>居中对齐

poem = ["登鹳雀楼",
        "王之涣",
        "白日依山尽",
        "黄河入海流",
        "欲穷千里目",
        "更上一层楼"]

for poem_str in poem:

    print("|%s|" % poem_str.center(10," "))

|   登鹳雀楼   |
|   王之涣    |
|  白日依山尽   |
|  黄河入海流   |
|  欲穷千里目   |
|  更上一层楼   |

>左侧对齐

for poem_str in poem:

    print("|%s|" % poem_str.ljust(10," "))

|登鹳雀楼      |
|王之涣       |
|白日依山尽     |
|黄河入海流     |
|欲穷千里目     |
|更上一层楼     |

 >右侧对齐

for poem_str in poem:

    print("|%s|" % poem_str.rjust(10," "))

|      登鹳雀楼|
|       王之涣|
|     白日依山尽|
|     黄河入海流|
|     欲穷千里目|
|     更上一层楼|

>去除空白字符

先使用strip方法去除字符串中的空白字符,再使用center方法居中显示文本。

poem = ["\t\n登鹳雀楼",
        "王之涣",
        "白日依山尽\t\n",
        "黄河入海流",
        "欲穷千里目",
        "更上一层楼"]

for poem_str in poem:
     
    print("|%s|" % poem_str.strip().center(10," "))


|   登鹳雀楼   |
|   王之涣    |
|  白日依山尽   |
|  黄河入海流   |
|  欲穷千里目   |
|  更上一层楼   |

 

 

 

 

4.6  拆分和合并

poem_str = "登鹳雀楼\t 王之涣 \t 白日依山尽 \t \n 黄河入海流 \t\t 欲穷千里目 \n更上一层楼"

print(poem_str)

# 1. 拆分字符串
poem_list = poem_str.split()
print(poem_list)

# 2. 合并字符串
result = " ".join(poem_list)
print(result)


登鹳雀楼	 王之涣 	 白日依山尽 	 
 黄河入海流 		 欲穷千里目 
更上一层楼
['登鹳雀楼', '王之涣', '白日依山尽', '黄河入海流', '欲穷千里目', '更上一层楼']
登鹳雀楼 王之涣 白日依山尽 黄河入海流 欲穷千里目 更上一层楼

 

 

4.7  字符串的切片

>切片方法适用于字符串、列表、元组

切片使用索引值来限定范围,从一个大的字符串中切出小的字符串;列表和元组都是有序的集合,都能够通过索引值获取到对应的数据;字典是一个无序的集合,是使用键值对保存数据。

>字符串[开始索引:结束索引:步长]

>指定的区间属于左闭右开型,从头开始,开始索引数字可以省略,冒号不可以省略;

到末尾结束,结束索引数字可以省略,冒号不能省略;步长默认为1,如果连续切片,数字和冒号都可以省略。

num_str = "0123456789"

1.截取从2~5位置的字符串
num_str[2:6]
'2345'

2.截取从2~末尾的字符串
num_str[2:]
'23456789'

3.截取从开始~5位置的字符串
num_str[:6]
'012345'

4.截取完整的字符串
num_str[:]
'0123456789'

5.从开始位置每隔一个字符截取字符串
num_str[::2]
'02468'

6.从索引1开始,每隔一个取一个
num_str[1::2]
'13579'

7.截取从2~末尾-1的字符串
num_str[2:-1]
'2345678'

8.截取字符串末尾两个字符
num_str[-2:]
'89'

9.字符串的逆序
num_str[-1::-1]
'9876543210'

num_str[::-1]
'9876543210'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值