python入门(6)高级变量

一、变量

  • python数据类型:数字型和非数字型
  • 数字型:整型(int)、浮点型(float)、布尔型(bool)、复数型(complex)
  • 非数字型:字符串、列表、元组、字典
  • 非数字型变量都支持以下特点:
    都是一个序列sequence,也可以理解为容器
    取值[ ]
    遍历 for in
    计算长度、最大值/最小值、比较、删除
    链接+ 和重复 *
    切片

二、列表

1. 列表的定义

  • List(列表)是python中使用最频繁的数据类型,在其他语言中通常叫做数组,专门用于储存一串信息。
  • 列表用 [ ] 定义,数据之间使用,分隔
name_list = ["zhangsan","lisi","wangwu"]
  • 定义空列表: name_list = [ ]
  • 列表的索引从0开始,索引就是数据在列表中的位置编号,索引又可以被称为下标,从列表中取值时,如果超出索引范围,程序会报错
    在这里插入图片描述

2.列表访问

-通过列表名[ 下标 ]访问列表中某个值,如 name_list[0]
`

3.列表常用操作

  • 定义一个列表,例如:name_list = [ ]
  • 打印name_list. ,当输入.后,pycharm会自动提示,然后选择自己合适的方法就可以了。
    在这里插入图片描述
    在这里插入图片描述
  • 取值和取索引
name_list = ["zhangsan","lisi","wangwu"]

#  list index out of range ---列表索引超出范围
print(name_list[1])
#知道数据的内容,想确定数据在列表中的位置
#使用index方法需要注意,如果传递的数据不在列表中,程序会报错
print(name_list.index("lisi"))
  • 修改
name_list = ["zhangsan","lisi","wangwu"]

# list assignment index out of range---列表指定的索引超出范围
name_list[1] = "李四"
  • 增加
    append方法可以向列表的末尾添加数据
    insert方法可以在列表的指定索引位置插入数据
    extend方法可以把另外一个列表的完整内容追加到当前列表末尾
name_list = ["zhangsan","lisi","wangwu"]

#append方法可以向列表的末尾添加数据
name_list.append("wangxiaoer")
#insert方法可以在列表的指定索引位置插入数据
name_list.insert(1,"xiaotongxue")
#extend方法可以把另外一个列表的完整内容追加到当前列表末尾
temp_list = ["唐三藏","孙悟空"]
name_list.extend(temp_list)
  • 删除
    remove方法可以从列表中删除指定的数据
    pop方法默认可以把列表中最后一个元素删除
    pop方法可以指定要删除元素的索引
name_list = ["zhangsan","lisi","wangwu"]

# 4.删除
#remove方法可以从列表中删除指定的数据,删除列表中第一次出现的数据
name_list.remove("wangwu")
#pop方法默认可以把列表中最后一个元素删除
name_list.pop()
#pop方法可以指定要删除元素的索引
name_list.pop("1")
#clear方法可以清空列表
name_list.clear()

print(name_list)
  • 使用del关键字删除(不推荐,了解)
name_list = ["zhangsan","lisi","wangwu"]

#使用del关键字(delete)删除列表元素
#在日常开发中,要从列表中删除数据,建议使用列表提供的方法
del name_list[1]
# del关键字本质上是用来将一个变量从内存中删除的
#注意:如果使用del关键字将变量从内存中删除,后续的代码就不能再使用这个变量了
print(name_list)
  • 列表统计及输出方法扩展
name_list = ["张三","李四","王五","张三"]
#len(length长度)函数可以统计列表中元素的总数
list_len = len(name_list)
print("列表中包含 %d 个元素" % list_len)

#count 方法可以统计列表中某一个数据出现的次数
count = name_list.count("张三")
print("张三出现了 %d 次" % count)

  • 排序–升序
name_list = ["张三","李四","王五","张三"]
num_list = [1,4,5,7,3]

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

print(name_list)
print(num_list)
  • 排序–降序
name_list = ["张三","李四","王五","张三"]
num_list = [1,4,5,7,3]

#降序
name_list.sort(reverse=True)
num_list.sort(reverse=True)
print(name_list)
print(num_list)
  • 逆序(反转)
name_list = ["张三","李四","王五","张三"]
num_list = [1,4,5,7,3]

#逆序(反转)
name_list.reverse()
num_list.reverse()
print(name_list)
print(num_list)
  • 关键字、函数、方法
    关键字:是python内置的、具有特殊意义的标识符
import keyword
print(keyword.kwlist)
print(len(keyword.kwlist))

函数:封装了独立功能,需要知道函数名
方法:封装了独立功能,需要通过对象来调用,表示针对这个对象要做的操作
对象.方法名(参数)
对象后面输入.(点),然后选择针对这个变量要执行的操作,记忆起来比函数要简单的多。

  • 循环遍历
    遍历就是从头到尾依次从列表中获取数据,在循环体内部针对每一个元素,执行相同的操作
    使用for就能够实现迭代遍历
name_list = ["张三","李四","王五","张三"]

#使用迭代遍历列表
for my_name in name_list:
    print("我的名字叫 %s" % my_name)
  • 列表应用场景
    尽管python的列表可以存储不同类型的数据,在开发中,常在列表中存储相同类型的数据,再通过迭代遍历,在循环体内部,针对列表中的每一项内容,执行相同的操作。

三、元组

  • 常用于存储不同类型的数据。
  • 与列表区别:元组中的元素定义后不能修改,用( ) 定义
  • 元组的索引从0开始,索引就是数据在元组中的位置编号,数据之间使用,分隔

1.定义元组与取值

  • 定义元组:info_tuple = ("zhangsan",1,1.75)

  • 定义一个空元组info_tuple = ()

  • 访问元组内容info_tuple[1]

  • 定义一个包含一个内容的元组:single_tuple = (5,)

2.元组的操作

  • 取值和取索引
info_tuple = ("zhangsan",1,1.75,"zhangsan")

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

print(info_tuple.count("zhangsan"))
#统计元组中包含元素的个数
print(len(info_tuple))
  • 元组遍历
    取值就是从元组中获取存储在指定位置的数据
    遍历就是从头到尾依次从元组中获取数据
    在python中,可以使用for循环遍历所有非数字型类型的变量:列表、元组、字典以及字符串
    在实际开发中,除非能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多
#for循环内部使用的变量in元组
for item in info:
	循环内部针对元组元素进行操作
	print(item)
  • 应用场景
    尽管可以使用for in 遍历元组,但是在开发中,更多的应用场景是:
    函数的参数和返回值,一个函数可以接收任意多个参数,或者一次返回多个数据
    格式字符串,格式化字符串后面的()本质上就是一个元组
    让列表不可以被修改,以保护数据安全

3.元组和列表之间的转换

  • 使用list函数可以把元组转换成列表
    list(元组)
  • 使用tuple函数可以把列表转换成元组
    tuple(列表)

四、字典

  • 字典(dictionary)是除列表以外python之中最灵活的数据类型
  • 字典同样可以用来存储多个数据,通常用于存储描述一个物体的相关信息
  • 字典和列表的区别:列表是有序的对象集合;字典是无序的对象集合
  • 字典用{ }定义
  • 字典使用键值对存储数据,键值对之间使用,分隔;键key是索引,值value是数据,键和值之间使用:分隔键必须是唯一的,值可以取任何数据类型,但键只能使用字符串、数字或元组
    在这里插入图片描述

1.字典的定义

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

2、字典常用操作

  • 取值
#字典是一个无序的数据集合,使用print函数输出字典时通常输出的顺序和定义的顺序是不一致的
xiaoming_dict = {"name":"xiaoming",
            "age":18,
            "gender":True,
            "height":1.75}
#取值的时候,如果指定的key不存在,程序会报错
print(xiaoming_dict["name"])
  • 增加、修改
xiaoming_dict = {"name":"xiaoming",
            "age":18,
            "gender":True,
            "height":1.75}
#如果key不存在,会新增键值对
#如果key存在,会修改已经存在的键值对
xiaoming_dict["age"] = 28
xiaoming_dict["name"] = "小小明"
print(xiaoming_dict)
  • 删除
xiaoming_dict = {"name":"xiaoming",
            "age":18,
            "gender":True,
            "height":1.75}
#在删除指定的键值对的时候,如果指定的key不存在,程序会报错!
xiaoming_dict.pop("name")
print(xiaoming_dict)
  • 统计键值对的数量
xiaoming_dict = {"name":"xiaoming",
            "age":18}
print(len(xiaoming_dict))
  • 合并字典
xiaoming_dict = {"name":"xiaoming",
            "age":18}
temp_dict = {"height":1.75,
             "age":20}
#如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对
xiaoming_dict.update(temp_dict)
print(xiaoming_dict)
  • 清空字典
xiaoming_dict.clear()
  • 字典的循环遍历
xiaoming_dict = {"name":"xiaoming",
            "age":18,
            "height":1.75}
#迭代遍历字典
#变量k是每一次循环中,获取到的键值对的key
for k in xiaoming_dict:
    print("%s - %s" % (k,xiaoming_dict[k]))
  • 应用场景
    使用多个键值对存储描述一个物体的相关信息–描述更复杂的数据信息
    将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理
#字典是一个无序的数据集合,使用print函数输出字典时通常输出的顺序和定义的顺序是不一致的
xiaoming_dict = {"name":"xiaoming",
            "age":18,
            "height":1.75}
card_list = [
    {"name":"zhangsan",
     "age":13},
    {"name":"lisi",
     "age":23}
]
for card_info in card_list:
    print(card_info)

五、字符串

1.字符串定义

  • 字符串就是一串字符,是编程语言中表示文本的数据类型
  • 在python中可以使用一对双引号“”和一对单引号‘’定义一个字符串,使用" 或者’ 可以做字符串的转义;但是在实际开发中,如果字符串内部需要使用" ,可以使用’ 定义字符串;如果字符串内部需要使用’ ,可以使用" 定义字符串
  • 可以使用索引获取一个字符串中指定位置的字符,索引计数从0开始
  • 也可以使用for循环遍历字符串中每一个字符
str1 = "hello python"
str2 = '我的外号是"大西瓜"'
print(str2)

2.字符串取值

str1 = "hello pyth
print(str1[1])

3.字符串遍历

str1 = "hello python"
for char in str1:
    print(char)

4.字符串常用操作汇总

在这里插入图片描述

  • 统计字符串的长度
str1 = "hello pythonhello"
print(len(str1))
  • 统计某一个小(子)字符串出现的次数
str1 = "hello pythonhello"
print(str1.count("llo"))
print(str1.count("abc"))
  • 某一个子字符串出现的位置
    注意:如果使用index方法传递的子字符串不存在,程序会报错
str1 = "hello pythonhello"
print(str1.index("llo"))
  • 1.判断类型-9
    在这里插入图片描述
  • 2.查找和替换-7
    在这里插入图片描述
  • 3.大小写转换-5
    在这里插入图片描述
  • 4.文本对齐-3
    在这里插入图片描述
  • 5.去除空白字符-3
    在这里插入图片描述
  • 6.拆分和连接-5
    在这里插入图片描述

5.字符串常用操作

  • 判断空白字符
    字符串中空格、制表符、回车、换行都是空白字符。
str1 = "   \t\n\r"
print(str1.isspace())
  • 判断数字的三个方法
    一般常用string.isdecimal()方法
    在这里插入图片描述
  • 判断是否以指定字符串开始
str1 = "hello world"
print(str1.startswith("hello"))
  • 判断是否以指定字符串结束
str1 = "hello world"
print(str1.endswith("world"))
  • 查找指定字符串
    index同样可以查找指定的字符串在大字符串中的索引;
    使用index查找,如果指定的字符串不存在,会报错
    使用find查找,如果指定的字符串不存在,会返回-1
str1 = "hello world"
print(str1.find("llo"))
print(str1.find("abc"))
  • 替换字符串
    replace方法执行完成之后,会返回一个新的字符串
    注意:不会修改原有字符串的内容
str1 = "hello world"
print(str1.replace("world","python"))
print(str1)
  • 对齐方式输出文本
# 要求:顺序并且居中对齐输出以下内容
poem = ["登鹳雀楼",
        "王之涣",
        "百日依山尽",
        "黄河入海流",
        "欲穷千里目",
        "更上一层楼"]
for poem_str in poem:
    print("|%s|" % poem_str.center(10," "))

在这里插入图片描述

  • 去除空白字符
# 要求:顺序并且居中对齐输出以下内容
poem = ["\t\n登鹳雀楼",
        "王之涣",
        "百日依山尽\t\n",
        "黄河入海流",
        "欲穷千里目",
        "更上一层楼"]
for poem_str in poem:
    #先使用strip方法去除字符串中空白字符
    #再使用center方法居中显示文本
    print("|%s|" % poem_str.strip().center(10," "))
  • 拆分和合并字符
    要求:将字符串中的空白字符全部去掉
    再使用“ ”作为分隔符,拼接成一个整齐的字符串
poem = "登鹳雀楼\t 王之涣 \t 百日依山尽 \t\n 黄河入海流\t\t欲穷千里目\n更上一层楼"
print(poem)
# 拆分字符串
poem_list = poem.split()
print(poem_list)

# 合并字符串
result = " ".join(poem_list)
print(result)
  • 字符串的切片
    切片方法适用于字符串、元组、列表
    切片使用索引值来限定范围,从一个大的字符串中切出小的字符串。
    列表和元组都是有序的集合,都能够通过索引值获取到对应的数据。
    字典是一个无序的集合,是使用键值对保存数据。

在这里插入图片描述

注意:指定的区间属于左闭右开型,从起始位开始,到结束位前一位结束(不包含结束位本身)
从头到尾,开始索引数字可以省略,冒号不能省略
到末尾结束,结束索引数字可以省略,冒号不能省略
步长默认为1,如果连续切片,数字和冒号都可以省略
案例:
在这里插入图片描述

num_str = "0123456789"
#1.截取从2~5位置的字符串
print(num_str[2:6])
#2.截取从2~末尾位置的字符串
print(num_str[2:])
#3.截取从开始~5位置的字符串
print(num_str[0:6])
print(num_str[:6])
#4.截取完整的字符串
print(num_str[:])
#5.从开始位置,每隔一个字符截取字符串
print(num_str[::2])
#6.从索引1开始,每隔一个取一个
print(num_str[1::2])
#7.截取从2~末尾-1的字符串
print(num_str[2:-1])
#8.截取字符串末尾两个字符
print(num_str[-2:])
#9.字符串的逆序(面试题)
print(num_str[-1::-1])
print(num_str[::-1])

六、高级变量公共方法

  • python内置函数
函数描述备注
len(item)计算容器中元素个数
del(item)删除变量del的两种方式
max(item)返回容器中元素最大值如果是字典,只针对key比较
min(item)返回容器中元素最小值如果是字典,只针对key比较

del函数对应

a = [1,2,3]
del  a[1]
print(a)

del(a[1])
print(a)

运行截图:
在这里插入图片描述
字符串比较符合以下规则:0<A<a

  • 切片
    在这里插入图片描述
    切片使用索引值来限定范围,从一个的字符串中切出小的字符串
    列表和元组都是有序的集合,都能够通过索引值获取到对应的数据
    字典是一个无序的集合,是使用键值对保存数据
    在这里插入图片描述
  • 运算符

在这里插入图片描述
注意:in在对字典操作时,判断的是字典的键
in和not in被称为成员运算符
成员运算符用于测试序列中是否包含指定的成员。
在这里插入图片描述

列表的extend函数和append函数的区别;append函数会将整个列表整体作为一个列表值插入原列表中,extend函数会将列表内的值分别插入到原列表中。
在这里插入图片描述

  • 完整的for循环语法
    for 变量 in 集合
      循环体代码
    else:
      没有通过break退出循环,循环结束后,会执行的代码,如果循环体内部使用了break退出循环,else下方的代码就不会被执行

    在迭代遍历嵌套的数据类型时,例如一个列表包含了多个字典,例如要判断某一个字典中是否存在指定的值,如果存在,提示并且退出循环,如果不存在,在循环整体结束后,希望得到一个统一的提示。
students = [
    {"name":"阿土"},
    {"name":"小美"}
]

#在学员列表中搜索指定的姓名
find_name = "asd"
for stu_list in students:
    print(stu_list)
    if stu_list["name"] == find_name:
        print("找到了 %s" % find_name)
        #如果已经找到,应该直接退出循环,而不再遍历后续的元素
        break
else:
    #如果希望在搜索列表时,所有的字典检查之后,都没有发现需要搜索的目标
    #还希望得到一个统一的提示!
    print("抱歉没有找到 %s" % find_name)
print("循环结束")

运行截图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值