ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

列表内置方法 元组内置方法 字典内置方法 集合内置方法

2022-06-27 22:37:45  阅读:136  来源: 互联网

标签:info 内置 jason name 元组 l1 print new 方法


目录

列表内置方法

特点

​ 列表在调用内置方法后不会产生新的值,而是修改自身

一.统计列表中数据值的个数

l1 = ['jason', 'kevin', 'oscar', 'tony', 'jerry']
l2 = [77, 33, 22, 44, 55, 99, 88]
print(len(l2))		# 输出 7

二.增加数据值

1..append()

​ 括号内无论写什么数据类型,都当成一个数据值追加

l1.append('owen')
print(li) 		
#输出 ['jason', 'kevin', 'oscar', 'tony', 'jerry','owen']

2..insert()

​ 括号内无论写什么数据类型,都当成是一个数据值插入

l1.insert(0,'插队')
print(l1)
# ['插队', 'jason', 'kevin', 'oscar', 'tony', 'jerry']
l1.inster(0,[1,2,3])
print(l1)
# 报错 AttributeError: 'list' object has no attribute 'inster'

3.扩展列表

l1 = [11, 22, 33, 44, 55]
l2 = [1, 2, 3]

方式一:

for i in l1:
    l2.append(i)
print(l2)
# 输出[1, 2, 3, 11, 22, 33, 44, 55]

方式二:

print(l1 + l2)

方式三

li.extend(l2)
# 括号里必须是支持for循环的数据类型

三.查询数据与修改数据

l1 = ['jason', 'kevin', 'oscar', 'tony', 'jerry']
print(l1)		# ['jason', 'kevin', 'oscar', 'tony', 'jerry']
print(l1[0])	# jason
print(l1[1,4])	# 报错
l1[0] = 'zhang'
print(l1)		#['zhang', 'kevin', 'oscar', 'tony', 'jerry']

四.删除数据

1.通用删除

​ 通过索引

del l1[0] 	

2.指名道姓删除

​ 括号内必须填写明确的数据值

res = l1.remove('jason')

3. .pop()

​ 先取值再删除

res = l1.pop() 		# 默认取出列表尾部的数据值,然后再删
res = l1.pop(0)		# 索引取值

五.查看数据值对应的索引值

print(l1.index('jason'))

六.统计数据值出现的次数

print(l1.count('jason'))

七.排序

l2.sort() 	#升序
l2.sort(reverse = True) 	# 降序

八.翻转

l1.reverse() 	#前后颠倒

九.比较运算

new_1 = [99,11]
new_2 = [11,22,33,44]
print(new_1 > new_2)		# True  按位置顺序一一比较
new_1 = ['a',11]
new_2 = [11,22,33,44]		# 不同数据类型之间默认无法直接操作
print(new_1 > new_2)
new_1 = ['a',11]
new_2 = ['A',22,33,44]		# a 97 A 65 
print(new_1 > new_2)		
new_1 = ['你',11] 		
new_2 = ['我',22,23,44]
print(new_1 > new_2)

元组内置方法

1.类型转换

​ 支持for循环的数据类型才可以转元组

print(tuple(123))		 # 不行
print(tuple(123.11))	 # 不行
print(tuple('hello')	# 可以
t = ()  	# tuple
t = (1) 	# int
t = ('abc')  # str
'''
当元组内只有一个数据值的时候,都好不能省略
如果省略了 括号里是什么数据类型就是什么数据类型
ps:以后遇到可以存储多个数据值的数据类型,如果只有一个数据,逗号也要加上
'''

2.相关操作

索引操作 统计数据个数 查与改
print(t1[0]) print(len(t1)) print(t1[0]) 可以
t1[0] = 222 不可以
t1 = (11,22,33,[11,22])
t1[-1].append(33)
print(t1)		# (11,22,33,[11,22,33])

字典内置方法

1.类型转换(了解即可)

print(dict([('name','jason'),('pwd',123)]))
print(dict(name='jason',pwd=123))
'''字典额很少涉及类型转换 一般直接定义使用'''

2.相关操作

1.字典内K:V键值对是无序的

2.取值操作

print(info['xxx']) print(info.get('xxx'))
不建议 建议使用
键不存在会报错 键不存在返回none

3.统计键值对个数

print(len(info))

4.修改数据

info['username'] = 'zhang'  # 键存在是修改
print(info)

5.新增数据

info['salary'] = 6   		# 键不存在则是新增

6.删除数据

方式一 方式二 方式三
del info['username'] res=pop('username') indo.popitem()
删除 先取值再删除 随机删除

7.快速获取键、值、键值对数据

方法 作用
info.keys() 获取字典所有k值,结果是列表
info.values() 获取字典所有v值,结果是列表
info.items() 获取字典kv键值对数据,组织成列表套元组

8.修改字典数据(键存在是修改,不存在是新增)

info.update({'username':'jason'})

9.快速构建字典(给的值默认情况下所有键都用同一个)

res = dict.fromkeys([1,2,3],None)
print(res)
# {1: None, 2: None, 3: None}
new_dict = dict.fromkeys(['name','pwd','hobby'],[])
# {'name':[],'pwd':[],'hobby':[]}
new_dict['name'] = []
new_dict['name'].append(123)
new_dict['pwd'].append(123)
new_dict['hobby'].append(123)

res = dict.fromkeys([1,2,3],154656161616)
print(id(res[1]))
print(id(res[2]))
print(id(res[3]))
'''
3039221108496
3039221108496
3039221108496
'''

10.键存在则获取键对应的值,键不存在则设置,并返回设置的新值

res = info.setdefault('username','zhang')
print(res,info)
# zhang {'username': 'zhang'}
res1 = info.setdefault('xxx','ababa')
print(res1,info)
# ababa {'username': 'zhang', 'xxx': 'ababa'}

集合内置方法

一.标志:

​ set()

二.类型转换

​ 支持for循环的,并且数据必须是不可变类型

三.注意事项

1.定义集合需要使用关键字才可以

2.集合内数据必须是不可变类型(整型 浮点型 字符串 元组 布尔值)

四.功能

1.去重

s1 = {1,2,3,4,5,2,2,6,6,5,6}
print(s1) 		# {1,2,3,4,5,6}
l1 = ['zhang','li','zhao','zhang','zhang','zhang']
s2 = set(l1)
li = list(s2)
print(s2)		# {'li', 'zhao', 'zhang'}

2.关系运算

print({1,2,[1,2,3]})
print({1,2,{'name':'jason'}})
s1 = {1, 2, 12, 3, 2, 3, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4}
print(s1)  # {1, 2, 3, 4, 5, 12}
l1 = ['jason', 'jason', 'tony', 'oscar', 'tony', 'oscar', 'jason']
s2 = set(l1)
l1 = list(s2)
print(l1)

可变与不可变类型

一、可变类型 list

​ 值改变(内置方法) 内存地址可以不变

l1 = [11,22,33]
print(id(l1))		# 1785983809160
l1.append(44)
print(id(l1))		# 1785983809160

二、不可变类型 str、int、float

​ 值改变(通过内置方法)内存地址肯定变

s1 = '$zhang$'
print(id(s1))		# 1317312885232
s1 = s1.strip('$')
print(id(s1))		# 1317312885680

作业

作业一

date_list = [{'name': 'zhang'}, {'name': 'wang'}, {'name': 'li'}]
while True:
    print('1.查看所有用户名\n2.删除指定用户\n3.完善用户信息\n4.退出程序')
    choice = int(input('请输入指令代码:').strip())
    if choice == 1:
        print(date_list)
    elif choice == 2:
        de_name = input('输入删除的对象:').strip()
        date = {}
        date['name'] = de_name
        for i in date_list:
            if date == i:
                date_list.remove(i)
                print('删除成功!')
                break
        else:
            print('用户不存在')
    elif choice == 3:
        print('用户信息')
        name = input('输入要修改的员工姓名:')
        new_age = input('请输入年龄:').strip()
        new_gender = input('请输入性别:').strip()
        new_addr = input('请输入地址:').strip()
        name1 = {}
        name1['name'] = name
        new = {}
        new['age'] = new_age
        new['gender'] = new_gender
        new['adderess'] = new_addr
        for i in date_list:
            if name1 == i:
                i.update(new)
                print('添加成功')
                break
            else:
                print('用户不存在')
    elif choice == 4:
        break

作业二

l1 = [2, 3, 2, 1, 2, 3, 2, 3, 4, 3, 4, 3, 2, 3, 5, 6, 5]
li_1 = list(set(l1))
li_1.sort(key=l1.index)
print(li_1)

作业三

pythons = {'jason','oscar','kevin','ricky','gangdan','biubiu'}
linuxs = {'kermit','tony','gangdan'}
same = pythons & linuxs
print('两门课都报了的有:%s' % same)
sum_name = set(pythons ^ linuxs)
print('报名了的名单:%s' % sum_name)
only_pythons = pythons - linuxs
print('只报了python的名单:%s' % only_pythons)
noboth = (pythons-linuxs)^(linuxs-pythons)
print('没有两门都报的名单:%s' % noboth)

标签:info,内置,jason,name,元组,l1,print,new,方法
来源: https://www.cnblogs.com/Zhang614/p/16417759.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有