day08_python_高级变量类型(非数字型)

1.列表(类似于数组)

序列是 Python 中最基本的数据结构。
序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。
Python 有 6 个序列的内置类型,但最常见的是列表和元组。
列表都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python 已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可

name_list = ["张三", "李四", "王五"]
print(name_list[1])
李四

方法:
在这里插入图片描述
在这里插入图片描述
用法:

hello_list = ["牛牛", "猪猪", "兔兔"]
name_list = ["张三", "李四", "王五"]
print(name_list)
# 取值和取索引
print(name_list[1])
print(name_list.index("李四"))  # 取索引
# 修改
name_list[2] = "大白"
print(name_list)
# 增加
name_list.append("小黑")  # 在列表末尾追加数据
print(name_list)

name_list.insert(2, "王五")  # 在某个位置插入数据
print(name_list)

name_list.extend(hello_list)  # 把另外的列表内容完整的追加在当前列表后面
print(name_list)
# 删除
name_list.remove("小黑")  # 如果有两个小黑,默认删除第一个
print(name_list)

name_list.pop()  # pop方法默认把列表最后一个元素删除
print(name_list)
name_list.pop(3)  # pop方法可以指定要删除元素的索引
print(name_list)

name_list.clear()  # 清空列表
print(name_list)
['张三', '李四', '王五']
李四
1
['张三', '李四', '大白']
['张三', '李四', '大白', '小黑']
['张三', '李四', '王五', '大白', '小黑']
['张三', '李四', '王五', '大白', '小黑', '牛牛', '猪猪', '兔兔']
['张三', '李四', '王五', '大白', '牛牛', '猪猪', '兔兔']
['张三', '李四', '王五', '大白', '牛牛', '猪猪']
['张三', '李四', '王五', '牛牛', '猪猪']
[]

进程已结束,退出代码0

del 删除(不建议使用)

name_list=["张三", "李四", "王五"]
del name_list[1]
print(name_list)
['张三', '王五']

列表的数据统计

name_list = ["张三", "李四", "王五", "李四"]
list_len = len(name_list)
print(name_list.count("李四"))
print("列表中包含 %d 个元素" % list_len)
2
列表中包含 4 个元素

排序

name_list = ["z张三", "l李四", "w王五"]
num_list = [5, 7, 4, 9, 13]
# 升序
name_list.sort()  # 对字母排序
num_list.sort()
print(name_list)
print(num_list)
# 降序
num_list.sort(reverse=True)
name_list.sort(reverse=True)
print(name_list)
print(num_list)
# 逆序(反转)
name_list.reverse()
num_list.reverse()
print(name_list)
print(num_list)
['l李四', 'w王五', 'z张三']
[4, 5, 7, 9, 13]
['z张三', 'w王五', 'l李四']
[13, 9, 7, 5, 4]
['l李四', 'w王五', 'z张三']
[4, 5, 7, 9, 13]

关键字、函数和方法
关键字 是python内置的、具有特殊意义的标识符,关键字后面不需要使用括号
函数 封装了独立功能,可以直接调用
方法 和函数类似,同样封装了独立的功能,需要通过对象来调用——对象.方法名(参数)

列表的循环遍历

name_list = ["张三", "李四", "王五", "李小四"]
# 使用迭代遍历列表
for my_name in name_list:  # 每循环一次,数据保存在my_name 变量里
    print("我的名字叫 %s" % my_name)
我的名字叫 张三
我的名字叫 李四
我的名字叫 王五
我的名字叫 李小四

列表应用场景
1.列表存储相同类型的数据
2.通过迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作

注意:python的列表可以存储不同类型的数据

2.元组

Python 的元组与列表类似,不同之处在于元组的元素不能修改,可以起到保护数据的作用
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组
元组使用小括号 ( ),列表使用方括号 [ ]。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
索引从0开始

empty_tuple = ()  # 创建空元组
single_tuple = (5, )  # 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
info_tuple = ("zhangsan", 18, 1.75, 1.75)
print(info_tuple[0])  # 取值
print(info_tuple.index(18))  # 取索引
print(info_tuple.count(1.75))  # 统计某个元素的个数
print(len(info_tuple))  # 统计元组中元素的个数

输出

zhangsan
1
2
4

循环遍历和字符串的拼接

info_tuple = ("小明", 18, 1.75)
for my_info in info_tuple:

    print(my_info)
print("%s的年龄是%d岁,身高是%0.2f米" % info_tuple)
小明
18
1.75
小明的年龄是18岁,身高是1.75

格式化字符后面的’()'本质上就是元组

info_str = "%s的年龄是%d岁,身高是%0.2f米" % info_tuple
print(info_str)
小明的年龄是18岁,身高是1.75

元组和列表之间的转换

num_list = [1, 3, 6]  # 定义一个列表
one = type(num_list)  # one来接收数据
print(one)

num_list = tuple(num_list)  # 强制转换为元组-----tuple()
two = type(num_list)
print(two)

num_list = list(num_list)  # 强制转换为列表-----list()
three = type(num_list)
print(three)
<class 'list'>
<class 'tuple'>
<class 'list'>

3.字典

字典是另一种可变容器模型,且可存储任意类型对象
键必须是唯一的,但值则不必
值可以取任何数据类型,但键必须是不可变的,如字符串,数字
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中

xusong = {"name": "许嵩",
          "age": 35,
          "gender": True,
          "height": 1.81,
          "weight": 120}

print(xusong)
# 取值
print(xusong["name"])
# 修改和增加
xusong["name"] = "小嵩嵩"  # 修改
xusong["where"] = "安徽"  # 新增
print(xusong)
# 删除
xusong.pop("where")
print(xusong)
{'name': '许嵩', 'age': 35, 'gender': True, 'height': 1.81, 'weight': 120}
许嵩
{'name': '小嵩嵩', 'age': 35, 'gender': True, 'height': 1.81, 'weight': 120, 'where': '安徽'}
{'name': '小嵩嵩', 'age': 35, 'gender': True, 'height': 1.81, 'weight': 120}

其他操作

xiaoming = {"name": "小明",
            "age": 18}
print(xiaoming)
# 统计键值对数量
one = len(xiaoming)
print(one)

# 合并字典并更新
qita = {"height": 100,
        "age": 20}
xiaoming.update(qita)
print(xiaoming)

# 清空字典
xiaoming.clear()
print(xiaoming)

输出

{'name': '小明', 'age': 18}
2
{'name': '小明', 'age': 20, 'height': 100}
{}

循环遍历

xusong = {"name": "许嵩",
          "age": 35,
          "height": 1.81,
          "weight": 120}
for k in xusong:  #k是每一次循环中获取的键值对的key
    print("%s - %s" % (k, xusong[k]))
name - 许嵩
age - 35
height - 1.81
weight - 120

将多个字典放在一个列表中

card_list = [
    {"naem": "小明",
     "qq": 123456,
     "phone": 554466},
    {
        "naem": "小张",
        "qq": 11111,
        "phone": 77777
    }
]

for card_info in card_list:
    print(card_info)
{'naem': '小明', 'qq': 123456, 'phone': 554466}
{'naem': '小张', 'qq': 11111, 'phone': 77777}

4.字符串

字符串是 Python 中最常用的数据类型。我们可以使用引号( ’ 或 " )来创建字符串。
创建字符串很简单,只要为变量分配一个值即可

定义和遍历字符串

str1 = "hello world"
str2 = "你是 '猪猪' "
str3 = '你是"猪猪"'
print(str1, str2, str3)
print(str1[6])

for char in str2:  # 遍历str2
    print(char)

字符串的统计操作

str1 = "hello world"
# 统计字符串长度
print(len(str1))

# 统计某个字符串出现的次数
print(str1.count("ll"))

# 某个字符串出现的位置
print(str1.index("w"))

字符串的常用操作
方法:
在这里插入图片描述

# 判断空白字符
str1 = " \t\n\r "
print(str1.isspace())

# 只包含数字返回True
# 都不能判断小数
num_str = "\u00b2"
print(num_str.isdigit())  # 全角数字、(2)、unicode\u00b2
print(num_str.isdecimal())  # 全角数字
print(num_str.isnumeric())  # 全角数字、汉字数字

hello_str = "hello world"
# 判断是否以指定的字符串开始
print(hello_str.startswith("he"))

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

# 查找指定字符串
print(hello_str.find("ll"))  # 查找的字符串不存在时返回-1

# 替换字符串
# replace 会返回一个新的字符串,但不会修改原有字符串内容
print(hello_str.replace("world", "python"))
print(hello_str)
True
True
False
True
True
True
2
hello python
hello world

进程已结束,退出代码0

文本对齐

poem = ["题都城南庄",
        "崔护",
        "去年今日此门中",
        "人面桃花相映红",
        "人面不知何处去",
        "桃花依旧笑春风"]
for p in poem:  # 居中对齐
    print(p.center(5))

for p in poem:  # 左对齐
    print(p.ljust(5))

for p in poem:  # 右对齐
    print(p.rjust(5))

去除空白字符

poem = ["\t\n题都城南庄",
        "崔护",
        "去年今日此门中",
        "人面桃花相映红\t\n",
        "人面不知何处去",
        "桃花依旧笑春风"]
for str3 in poem:
    print("|%s|" % str3.strip().center(10))
|  题都城南庄   |
|    崔护    |
| 去年今日此门中  |
| 人面桃花相映红  |
| 人面不知何处去  |
| 桃花依旧笑春风  |

拆分和连接

poem1 = "去年今\t日此门中 人面桃花相映红\t\n人面不知何处\t去桃花依旧笑春风"
print(poem1)
# 拆分字符串
print(poem1.split())
# 合并字符串
print("".join(poem1))
去年今	日此门中 人面桃花相映红	
人面不知何处	去桃花依旧笑春风
['去年今', '日此门中', '人面桃花相映红', '人面不知何处', '去桃花依旧笑春风']
去年今	日此门中 人面桃花相映红	
人面不知何处	去桃花依旧笑春风

字符串的切片

num = "0123456789"  # 0开始
l0 = num[2:6]  # 2开始之后,6结束之前
print(l0)
l1 = num[2:]  # 截取2到结尾
print(l1)
l2 = num[0:6]  # 开始到5
print(l2)
l3 = num[:]  # 完整字符串
print(l3)
l4 = num[::2]  # 从开始位置每隔一个字符截一次
print(l4)
l5 = num[1::2]  # 从1开始位置每隔一个字符截一次
print(l5)
l6 = num[2:-1]  # 从2开始,不包含倒数第一个字符串
print(l6)
l7 = num[-2:]  # 截取字符串末尾两个字符
print(l7)
l8 = num[::-1]  # 字符串的逆序,-1是步长
print(l8)
2345
23456789
012345
0123456789
02468
13579
2345678
89
9876543210

4.公共方法和变量高级

python内置函数
在这里插入图片描述
注意:字符串 比较符合以下规则:“0”<“A”<“a”

end = "老婆" > "老公"
# \u8001\u5a46\u000d\u000a
# \u8001\u516c\u000d\u000a
print(end)

end = "1" > "a"
print(end)
True
False

运算符
在这里插入图片描述
for 循环

# for循环找得到就break跳出循环,找不到就进入else
for num in [1, 2, 3, 4]:
    print(num)
    if num == 4:
        break
else:
    print("找不到")

print("循环结束")
1
2
3
4
循环结束

进程已结束,退出代码0

实例

student = [
    {"name": "小黑"},
    {"name": "小白"}
]
find_name = "小花"

for stu_dict in student:
    print(stu_dict)
    if stu_dict["name"] == find_name:
        print("已找到 %s 同学" % find_name)
        break
else:
    print("没有找到该同学")

print("循环结束")
{'name': '小黑'}
{'name': '小白'}
没有找到该同学
循环结束

注意:如果else在if下面,则每次if判断都会返回结果

student = [
    {"name": "小黑"},
    {"name": "小白"}
]
find_name = "小花"

for stu_dict in student:
    print(stu_dict)
    if stu_dict["name"] == find_name:
        print("已找到 %s 同学" % find_name)
        break
    else:
        print("没有找到该同学")

print("循环结束")
{'name': '小黑'}
没有找到该同学
{'name': '小白'}
没有找到该同学
循环结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

M|Young

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值