4.18笔记,今天主要学列表,字典,元组,以及推导

本文深入探讨了Python中的字符串操作,包括字符串切片、常用方法如replace、split、join等,以及列表的循环、嵌套、增删改查操作。此外,还介绍了元组、字典和集合的基本使用,包括它们的功能、转换和常见操作。最后,通过一个学生管理系统实例展示了字典在实际问题中的应用。
摘要由CSDN通过智能技术生成
'''
字符串类型
字符串切片
字符串常用操作方法
列表
列表循环
列表嵌套
元组及其使用场景
'''

# str1='abcd'
# str2='hello world'

# 三引号定义字符串 支持换行

str3='''
    life is short
    i study python!
'''
print(str3)
# 创建一个字符串 I’m Tom

str4 = 'I\'m Tom'  # \ 转义字符
str5 = "I'm Tom"

# 字符串输入 input就可以  input()返回的数据类型都是字符串

'''
字符串切片
变量名称[起始位置:结束位置:步长]
'''

str6 = 'itheima'
print(str6[1: 5: 1])

'''
字符串中的查找方法
str.find() 返回搜索内容起始下标,没有的话返回-1
str.index() 返回搜索内容起始下标,没有的话报错
'''

# str7 = 'hello world'
# str8 = 'rle'
# print(str7.find(str8))
# print(str7.index(str8))

'''
如何获得图片名称以及图片后缀名
r.find() 从右边开始查询
'''
# filename = input('请输入图片名称:')
# index = filename.rfind('.')
# print(filename[:index])
# print(filename[index:])


'''
字符串常用的操作方法
1.修改字符串
str.replace()  替换
str.split()  返回列表 切割
'str'.join(list)  多个字符串合并一个字符串
str.upper()  str.lower()  大写或小写

'''
str7 = 'hello linux'
str8 = 'hello python and hello ubuntu'
print(str7.replace('linux', 'python'))
print(str8.replace('python', 'linux', 1))

str9 = 'apple-banana-orange'
print(str9.split('-'))
# 定义一个列表
list1 = ['apple', 'banana', 'orange']
print('-'.join(list1))

str10 = 'i am tom,nice to meet you'
# 把首字母大写
print(str10.title())
# 全大写
print(str10.upper())

'''
字符串判断
str.startwith()
str.endswhit()

'''
print(str10.startswith('i'))
print(str10.endswith('you'))
print('-'*20)
'''
验证码问题
'''
import random
code=''
yzm = 'abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ1234567890'
# 编写循环结构
for i in range(4):
    index = random.randint(0,len(yzm)-1)
    code +=yzm[index]
print(code)

print(yzm[random.randint(0, 24)])
print('-'*20)
'''
列表
存储结构与遍历输出 
列表查找方法
'''
name_list = ['lihua','chengchen','tom']
print(name_list)
for i in name_list:
    print(i)
fruit_list = ['apple','banana','orange','pear','pear','pear']
print(fruit_list.index('orange'))

print(fruit_list.count('pear'))
print('-'*30)

'''
in
not in    
返回true false
'''
bloce_ips = ['192.168.27.5','10.1.1.100','222.246.129.81']
if '10.1.1.100' in bloce_ips:
    print('恶意访问')
else:
    print('正常请求')

print('-'*30)

'''
增加 
append() 追加
extend() 两个列表合并
insert() 指定位置插入
'''
fruit_list.append('lenmo')
print(fruit_list)

fruit_list.extend(name_list)
print(fruit_list)

# 特殊 使用extend插入一个字符串

name_list.extend('python')
print(name_list)
name_list.insert(2,'lili')
print(name_list)

print('-'*30)
'''
删除
del
pop()  默认删除最后一个 也可以指定位置
remove()  移除第一个
clear()

'''

del name_list[1]
print(name_list)


name_list.pop(3)
print(name_list)

name_list.remove('h')
print(name_list)
print('-'*30)

'''
列表修改
reverse()  反转操作
sort()  排序 默认从小到大 
sort(reverse=True)  从大到小 

['lihua', 'lili', 'tom', 'y', 't', 'o', 'n']
'''
name_list.reverse()
print(name_list)

name_list.sort()
print(name_list)

#列表切片
print(name_list[::-1])

'''
列表嵌套
二维数组
'''

list2=['1班张三','二班网易']
list3=['三班和凯','四班后肯']
list4=['五班健康','六班森林']
biglist = [list2,list3,list4]
print(biglist)

# 嵌套列表提取

print(biglist[2])
print(biglist[2][1])


print('^'*30)


'''
作业

'''
i = 1
for i in range(101):
    if i%3==2 and i%5==3 and i%7==2:
        print(i)


print('^'*40)
'''
元组tuple
内容不可变 
功能与列表类似
查询:元组[索引],index(),count(),len()
'''
# 定义单元素
tuple1 = (10,)

print(type(tuple1))

# 定义多元素
tuple2 = (10,20,30,40,50)
print(tuple2)

print(tuple2[1])

print(tuple2.index(10))

print(tuple2.count(20))
print(len(tuple2))


print('*'*40)



'''
字典
字典名称[key] = value
注:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。
字典的键一般为字符串,也可以是数值类型
key必须唯一  value可重复
集合
数据序列

'''
# 有数据字典
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

# 空字典
dict2 = {}

dict3 = dict()

# 1、定义一个有数据的字典
person = {'name':'王大锤', 'age':28, 'gender':'male', 'address':'北京市海淀区'}
# 2、删除字典中的某个元素(如gender)
del person['gender']
# 3、打印字典
print(person)

dict4 = {1:10,2:20,3:30}
print(dict4[2])

# 字典增删查改
person['name']='迪丽热巴'
person['age'] = 27
person['address']='新疆'
print(person)

# 删除
del person['age']
print(person)

person.clear()
print(person)
'''
字典里有key 则修改
字典里没有key,则加入
'''
dict1['kk']='ddd'
print(dict1)

'''
查询 常规查询:
get(key,默认值)  存在 返回value,不存在返回默认值
keys(),用于获取所有key,保存为列表
values(),返回列表
items() 以[(),(),()]

'''
print(dict1.get('kkk', 6))
print(dict1.keys())
print(dict1.values())
print(dict1.items())

for k,v in dict1.items():
    print(k,':',v)

'''
学生管理系统(简版)
需求:开个一个通讯录的管理系统,主要用于实现存储班级中同学的信息(姓名、年龄、电话)

知识点:==列表、字典、死循环==

延伸:在Python中,我们可以使用字典来保存一个人的基本信息。但是如果想保存多个人的信息,我们必须把列表和字典结合起来。

'''
# 定义一个变量 studen [{},{},{}]
# student =[{'name':'刘昊然','age':23,'mobile':10001},{'name':'刘昊然','age':23,'mobile':10001}]
'''
students = []
# 定义一个系统弹出功能,告诉用户实现什么功能
while True:
    print('-'*50)
    print('欢迎使用管理系统')
    print('[1]添加学生信息')
    print('[2]删除学生信息')
    print('[3]查询学生信息')
    print('[9]退出系统')
    print('-'*50)

    usernum = eval(input('请输入您要执行的编号:'))
    if usernum == 1:
        student_name = input('请输入学生姓名:')
        student_age = int(input('请输入学生年龄:'))
        student_mobile = int(input('请输入学生电话:'))
        student = {}
        student['name'] = student_name
        student['age'] = student_age
        student['mobile'] = student_mobile
        students.append(student)
        print(f'{student_name}信息添加成功')
    elif usernum == 2:
        student_name = eval(input('请输入学生姓名:'))
        for i in students:
            if i['name'] == student_name:
                students.remove(i)
                print(f'{student_name}信息删除成功')
                break
        else:
            print(f'找不到{student_name}信息')
    elif usernum == 3:
        for i in students:
            print(i)

    else:
        print('系统退出成功')
        break
'''

'''
集合 自动去重 
无序
空集合 set()
增加
add()
更新 update()
集合中删除:remove()删除指定元素,若数据不存在报错   discard()删除指定元素,若数据不存在不报错   pop()随即删除某个元素,并返回元素

交集
并集
'''
set1={10,20,30}
print(type(set1))
# 求集合中的交集、并集、差集
s1 = {'刘备', '关羽', '张飞', '貂蝉'}
s2 = {'袁绍', '吕布', '曹操', '貂蝉'}

# 求两个集合中的交集
print(s1 & s2)

# 求两个集合中的并集
print(s1 | s2)

# 求连个集合中的差集
print(s1 - s2)
print(s2 - s1)

'''
| **编号** | **函数**                 | **描述**                                                     |
| -------- | ------------------------ | ------------------------------------------------------------ |
| 1        | len()                    | 计算容器中元素个数                                           |
| 2        | del或del()               | 根据索引下标删除指定元素                                     |
| 3        | max()                    | 返回容器中元素最大值                                         |
| 4        | min()                    | 返回容器中元素最小值                                         |
| 5        | range(start,  end, step) | 生成从start到end(不包含)的数字,步长为  step,供for循环使用 |
| 6        | enumerate()              | 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在  for  循环当中。 |
'''
# enumerate(),把一个序列类型(列表、元组、字符串)的数据构造成key:value结构,然后结合for循环进行遍历

list4 = [10, 20, 30, 40, 50]
for key,value in enumerate(list4):
    print(f'{key+1}的值{value}')

## 4、序列类型之间的相互转换

#list()方法:把某个序列类型的数据转化为列表

'''
python
# 1、定义元组类型的序列
tuple1 = (10, 20, 30)
print(list(tuple1))

# 2、定义一个集合类型的序列
set1 = {'a', 'b', 'c', 'd'}
print(list(set1))

# 3、定义一个字典
dict1 = {'name':'刘备', 'age':18, 'address':'蜀中'}
print(list(dict1))

tuple()方法:把某个序列类型的数据转化为元组

# 定义一个列表类型的数据
list1 = ['a', 'b', 'c', 'd']
print(tuple(list1))

# 定义一个集合类型的数据
set1 = {10, 20, 30, 40}
print(tuple(set1))

set()方法:将某个序列转换成集合(但是要注意两件事 => ① 集合可以快速完成列表去重 ② 集合不支持下标)

# 定义一个列表类型的数据
list1 = ['a', 'b', 'c', 'd', 'a']
print(set(list1))
# 定义一个元组类型的数据
tuple1 = (10, 20, 30, 40)
print(set(tuple1))
'''
dict1 = {'name':'刘备', 'age':18, 'address':'蜀中'}
print(list(dict1))

list5 = [i for i in range(10)]
print(list5)

list6 = [i for i in range(10) if i%2==0]
print(list6)

list7 = [(i,j) for i in range(1,3) for j in range(0,3)]
print(list7)

dict5 = {i:i*2 for i in range(10)}
print(dict5)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值