python基础笔记(二)

前言

一、配套视频

https://www.bilibili.com/video/BV1ex411x7Em?from=search&seid=13312287313219257984

二、python基础初级

https://blog.csdn.net/weixin_51585624/article/details/116195258

三、python基础中级

四、python基础高级

https://blog.csdn.net/weixin_51585624/article/details/116204361
为方便大家学习,在此发布python基础入门部分配套讲义,原作者为黑马程序员, 前100节为Linux基础,所以我从100集开始记录,持续更新…

目录

python基础中级(列表、元组、字典、字符串)

01、列表

# list 在c++中被称为数组
name_list = ["张三", "李四", "王五", "李四"]
print(name_list)
# len 统计列表中元素的总数  函数
long = len(name_list)
print("列表中包含%d个元素" % long)

# count 统计出现的次数  方法
counts = name_list.count("李四")
print("李四出现%d次" % counts)

# 取值
print(name_list[0])
# 取索引
print(name_list.index("李四"))
# 修改
name_list[2] = "wangwu"
print(name_list, "\n\n")

# 增加
name_list.append("王小二")  # 向列表的末尾追加数据
print(name_list)
name_list.insert(1, "小美美")  # 在索引为1的位置增加
print(name_list)
temp_list = ["孙悟空", "猪二哥", "沙师弟"]
name_list.extend(temp_list)  # 向列表的末尾追加列表数据
print(name_list, "\n")

# 删除
name_list.remove("李四")  # 删除指定的数据 只删除了第一个李四
print(name_list)
name_list.pop(0)  # 指定要删除的索引
print(name_list)
del name_list[0]  # 指定要删除的索引(从内存中删除)
print(name_list)
name_list.clear()  # 删除列表所有数据
print(name_list)
控制台结果

['张三', '李四', '王五', '李四']
列表中包含4个元素
李四出现2次
张三
1
['张三', '李四', 'wangwu', '李四'] 


['张三', '李四', 'wangwu', '李四', '王小二']
['张三', '小美美', '李四', 'wangwu', '李四', '王小二']
['张三', '小美美', '李四', 'wangwu', '李四', '王小二', '孙悟空', '猪二哥', '沙师弟'] 

['张三', '小美美', 'wangwu', '李四', '王小二', '孙悟空', '猪二哥', '沙师弟']
['小美美', 'wangwu', '李四', '王小二', '孙悟空', '猪二哥', '沙师弟']
['wangwu', '李四', '王小二', '孙悟空', '猪二哥', '沙师弟']
[]

Process finished with exit code 0

02、列表排序

name_list = ["张三", "李四", "王五", "李四"]
num_list = [12, 34, 2, 43, 10, 3]

# 逆序
name_list.reverse()
num_list.reverse()
print(name_list)
print(num_list, "\n")

# 升序
name_list.sort()
num_list.sort()
# 降序
name_list.sort(reverse=True)
num_list.sort(reverse=True)

print(name_list)
print(num_list)
控制台结果

['李四', '王五', '李四', '张三']
[3, 10, 43, 2, 34, 12] 

['王五', '李四', '李四', '张三']
[43, 34, 12, 10, 3, 2]

Process finished with exit code 0

03、列表for遍历

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

for my_name in name_list:
    print("我的名字叫%s" % my_name)
控制台结果

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

Process finished with exit code 0

04、元组

# 元组与列表相似,不同之处在于元组的元素不能修改,元组可以保存不同类型的数据
infor = (120, "张三", 1.323)
# 当只包含一个元素的元组,需要添加逗号
infors = (120,)
print(type(infor))

# 元组只有两个方法
# count  index

# 取值
print(infor[0])
# 取索引
print(infor.index("张三"))
# 统计
print(infor.count("张三")) # 统计出现的次数
控制台结果

<class 'tuple'>
120
1
1

Process finished with exit code 0

05、元组的遍历

infor = ("张三", 18, 1.78)
for my in infor:
    print(my)

# 格式化字符串后面的()本质上就是元组
print("%s的年龄是%d身高是%f" % infor)
控制台结果

张三
18
1.78
张三的年龄是18身高是1.780000

Process finished with exit code 0

06、列表与元组的互换

# 列表转元组
num_list = [1, 234, 4545, 65, 2]
num_tuple = tuple(num_list)
print(type(num_tuple))
print(num_tuple)
# 元组转换列表
num_lists = list(num_tuple)
print(type(num_lists))
print(num_lists)
控制台结果

<class 'tuple'>
(1, 234, 4545, 65, 2)
<class 'list'>
[1, 234, 4545, 65, 2]

Process finished with exit code 0

07、字典

# 列表 是存储 有序的对象集合
# 字典 是存储 无序的对象集合

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'}

Process finished with exit code 0

08、字典的基本使用

xiaoming_dict = {"name": "小明"}
# 取值
print(xiaoming_dict["name"])
# 增加/修改
xiaoming_dict["age"] = 18
xiaoming_dict["name"] = "小小明"
print(xiaoming_dict)

# 删除
xiaoming_dict.pop("age")

print(xiaoming_dict)
控制台结果

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

Process finished with exit code 0

09、字典的其他操作

xiaoming_dict = {"name": "小明",
                 "age": 18}
# 统计键值对数量
print(len(xiaoming_dict))
# 合并字典
temp_dict = {"height": 1.75,
             "age": 20}
# 注意:如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对
xiaoming_dict.update(temp_dict)
print(xiaoming_dict)
# 清空字典
xiaoming_dict.clear()
print(xiaoming_dict)
控制台结果

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

Process finished with exit code 0

10、字典的for遍历

xiaoming_dict = {"name": "小明",
                 "qq": "2323234",
                 "phone": "10086"}
# 遍历字典
# 变量K是每一次循环中,获取到的键值对的KEY
for k in xiaoming_dict:
    print("%s-%s" % (k, xiaoming_dict[k]))
控制台结果

name-小明
qq-2323234
phone-10086

Process finished with exit code 0

11、字典放入列表

car_list = [
    {"name": "张三"},
    {"qq", "21323"},
    {"phone": "32323231211"},
    {"name":"李四",
     "qq":"123234"}
]

for card in car_list:
    print(card)
控制台结果

{'name': '张三'}
{'21323', 'qq'}
{'phone': '32323231211'}
{'name': '李四', 'qq': '123234'}

Process finished with exit code 0

12、字符串

str1 = "我的外号是'大西瓜'"
str2 = '我的外号是"大西瓜"'
print(str1)
print(str2)
print(str1[3])  # 取值

for char in str2:
    print(char)
控制台结果

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

Process finished with exit code 0

13、字符串的常用操作

hello_str = "  hello hello"
print(len(hello_str))  # 统计字符串长度
print(hello_str.count("l"))  # 统计出现次数

# 某字符串出现的位置
print(hello_str.index("e"))  # 也可以用hello_str.find

# 替换,不会修改原有字符串内容
a = hello_str.replace("hello", "python")
print(a)
print(hello_str)

# 使用strip方法去除字符串中的左右两边的空白字符
print(hello_str.strip())

控制台结果

13
4
3
  python python
  hello hello
hello hello

Process finished with exit code 0

14、字符串文本对齐

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

for poem_str in poem:
    print(poem_str.center(20))  # 文本中心对齐,靠左边20
控制台结果

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

Process finished with exit code 0

15、字符串的拆分和连接

poem_str = "登鹳雀楼\t王之涣\t白日依山尽\t\n黄河入海流 \t\t欲穷千里目\n更上一层楼"
print(poem_str)
# 拆分字符串,获得字符串列表
poem_list = poem_str.split()
print(poem_list)

# 合并字符串,用空格与列表各元素拼接
result = " ".join(poem_list)
print(result)
控制台结果

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

Process finished with exit code 0

16、字符串切片

num_str = "0123456789"
print(num_str[2:5])
print(num_str[2:])
print(num_str[:-2])
print(num_str[:])
print(num_str[::2])  # 步长为2
# 字符串的逆序
print(num_str[::-1])
控制台结果

234
23456789
01234567
0123456789
02468
9876543210

Process finished with exit code 0

17、公共方法

# 公共方法 列表 元组 字典 字符串  的公共方法
"""""
len() 获取长度
del() 删除索引所对的数据
max()  如果是字典比较,比较的是KEY的大小
min()


"""""

print("a" in "abc")  # 字符串
print(1 in [1, 2, 3])  # 列表
print("a" in {"a": "laowang"})  # 字典,只能判断字典的Key
控制台结果

True
True
True

Process finished with exit code 0

18、for循环

""""
 for 变量 in 集合:
    循环体代码
  else
  for全部循环结束后,就会执行else代码,
  除非for循环中使用了break中途退出了循环,则不执行else
  """
for num in [1, 2, 3]:
    print(num)
    if num == 2:
        break

else:
    print("会执行吗?")
print("循环结束")
控制台结果

1
2
循环结束

Process finished with exit code 0

19、遍历字列表中的字典

students = [
    {"name": "阿土"},
    {"name": "小美"},
    {"name": "小王"}
]
find_name = "小土"
for stu_dict in students:
    print(stu_dict)
    if stu_dict["name"] == find_name:
        print("找到了 %s" % find_name)
        break
else:
    print("抱歉未找到 %s" % find_name)
print("循环结束")
控制台结果

{'name': '阿土'}
{'name': '小美'}
{'name': '小王'}
抱歉未找到 小土
循环结束

Process finished with exit code 0

20、变量

a = 1
b = a
print(id(a))  # 打印内存地址
print(id(b))
a = 2
print(id(a))

# 可变类型数据 列表、字典
# 可变类型的数据变化,是通过方法来实现的
# 如果给一个可变类型的变量,赋值了一个新的数据,引用会修改
# a相当于贴纸,一开始贴在(指针指向)1处,后面贴在(指针指向)了2处
控制台结果

140731019927952
140731019927952
140731019927984

Process finished with exit code 0

21、字典所存储的数据类型

d = {}
d["name"] = "小明"  # 存放字符串(不可变数据)
print(d)
d[1] = "整数"  # 存放整数(不可变数据)
print(d)
d[(1,)] = "元组"  # 存放元组(不可变数据)
print(d)

# 字典中 不可以放列表、字典(可变类型数据)
# 列表中可以放字典,字典可放元组与字符串
# 键值对的KEY必须是不可变类型数据
# 键值对的value可以是任意类型的数据
控制台结果

{'name': '小明'}
{'name': '小明', 1: '整数'}
{'name': '小明', 1: '整数', (1,): '元组'}

Process finished with exit code 0

22、局部变量

def demo(a):  # 单独传整数1,a贴纸未动,一直贴在(指向)整数1处
    a = a + 1  # 局部变量
    print(a)  # a指向整数2
    print(id(a))
    return a  # 返回a的地址给b,a和b都指向了整数2


a = 1  # 全局变量
b = demo(a)  # 传值不传址 ,a依旧(贴在)指向整数1
print(b)
print(id(b))

print(a)
print(id(a))
控制台结果

2
140734139965872
2
140734139965872
1
140734139965840

Process finished with exit code 0

23、全局变量global

def demo(c):
    global a  # 传址 告诉解释器后面的变量是一个全局变量,把a贴纸(指针指向)拿了过来
    a = c + 1  # a贴纸 指向了整数2
    print(a)
    print(id(a))
    return a  # 返回a的地址给b


a = 1  # 全局变量
b = demo(a)  # 传值不传址
print(b)
print(id(b))

print(a)
print(id(a))
控制台结果

2
140734139965872
2
140734139965872
2
140734139965872

Process finished with exit code 0

24、函数的返回值

'''
无参无返
无参有返
有参有返
有参无返
'''
def measure():   # 无参有返
    print("测量开始。。。")
    temp = 39
    wetness = 50
    print("测量结束。。。")
    return (temp, wetness)  # 返回元组,小括号可以省略


result = measure()
print(result)
# 如果函数返回的类型是元组,同时希望单独的处理元组中的元素
# 可以使用多个变量,一次性接收函数的返回结果,变量的个数因该和元组中元素的个数保持一致
gl_temp, gl_wetness = measure()
print(gl_temp)
print(gl_wetness)
控制台结果

测量开始。。。
测量结束。。。
(39, 50)
测量开始。。。
测量结束。。。
39
50

Process finished with exit code 0

25、交换2个变量的值

a = 6
b = 100

a, b = b, a  # Python专有的 元组元素互换 等号右边是一个元组,左边是接受的变量个数
print(a)
print(b)
控制台结果

100
6

Process finished with exit code 0

26、函数内通过方法修改全局变量

def demo(num_list):
    print("函数内部的代码")
    # 使用方法修改列表指针的指向,原本num_list指向[1, 2, 3],通过append方法后,改变了指向,指向了[1, 2, 3,9]
    num_list.append(9)  # 方法(列表、字典)指定地址(传址),  列表的+=也属于方法因为其本质是内部调用extend方法
    num_list += [10, 11]  # 通过+=方法后,改变了指向,指向了[1, 2, 3,9,10,11]
    print(num_list)
    print(id(num_list))
    print("函数执行完成")


gl_list = [1, 2, 3]
demo(gl_list)

print(gl_list)
print(id(gl_list))

# 本次程序运行中,[1, 2, 3]的所占内存一直未被释放,直到整个代码运行完才自动释放
控制台结果

函数内部的代码
[1, 2, 3, 9, 10, 11]
1986400113096
函数执行完成
[1, 2, 3, 9, 10, 11]
1986400113096

Process finished with exit code 0

27、缺省参数

gl_list = [6, 3, 9]
gl_list.sort(reverse=True)  # 默认是升序排序,Ture是降序排序
print(gl_list)


# 缺省参数,需要使用 最常用的值 作为默认值
# 如果一个参数的值不能确定,则不应该设置默认值,具体的数值在调用函数时,由外界传递
def print_info(name, gender=True):  # 默认gender传了一个Ture过来
    """

    :param name:  班上同学的姓名
    :param gender: Ture 男生    False 女生
    """
    gender_text = "男生"
    if not gender:  # not取反  假如gender没有传值进来,取反,则为真,执行if语句
        gender_text = "女生"
    print("%s是%s" % (name, gender_text))


print_info("小明")
print_info("小王")
print_info("小美", False)  # 传入假
控制台结果

[9, 6, 3]
小明是男生
小王是男生
小美是女生

Process finished with exit code 0

28、多值参数装包

# 函数中参数传递的个数 有时候是不固定的
# 把离散数据装进元组或字典中
"""
*args-----存放元组参数,前面有一个*
**kwarges----存放字典参数,前面有两个*

"""


def demo(num, *nums, **person):
    print(num)
    print(nums)
    print(person)


demo(1)
print("*" * 50)
demo(1, 2, 3, 4, 5, name="小明", age=18, weight=180)
控制台结果

1
()
{}
**************************************************
1
(2, 3, 4, 5)
{'name': '小明', 'age': 18, 'weight': 180}

Process finished with exit code 0

29、多值参数求和

def sun_numbers(*args):
    num = 0
    print(args)
    for n in args:
        num += n
    return num


result = sun_numbers(1, 2, 3, 4, 5)
print(result)
控制台结果

(1, 2, 3, 4, 5)
15

Process finished with exit code 0

30、多值函数拆包

def demo(*args, **kwargs):
    print(args)
    print(*args)  # 拆开元组获得元素
    print(kwargs)
    print(*kwargs)  # 拆开字典,获得key


# 元组变量/字典变量
gl_nums = (1, 2, 3)
gl_dict = {"name": "小明", "age": 18}

demo(*gl_nums, **gl_dict)  # 传递元组、字典
# 等同于:
# demo(12, 3, name="小明", age=18)
控制台结果

(1, 2, 3)
1 2 3
{'name': '小明', 'age': 18}
name age

Process finished with exit code 0

31、递归

#  函数内部,自己调用自己,但要添加参数判断,准备递归的出口,不然会死循环

def sum_number(num):
    print(num)
    if num == 1:
        return
    sum_number(num - 1)  # 调用自己


sum_number(3)
控制台结果

3
2
1


Process finished with exit code 0
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值