python列表推导式练习

news/2025/1/11 10:53:28/

python列表推导式练习总结:
问题一
如何快速生成一个列表
[“data0”,“data1”,“data2”,“data3”,…,“data99”,]
问题二
如何快速生成一个列表[“data0”,“gy1”,“data2”,“gy3”,…,“data98”,“gy99”]
列表以下方法总结如代码:

"""
需求一:如何快速生成一个["data0","data1","data2","data3",...,"data99",]
"""
# 简单
li = []
for i in range(100):li.append("data{}".format(i))
print(li)# 列表推导式
li2 = ['data{}'.format(i) for i in range(100)]
print(li2)
"""
把上述列表中data后面为偶数的数据过滤掉,
即,只要奇数的
"""
# 方法一、打印奇数,可以通过修改步长
li3 = ["data{}".format(i) for i in range(1,100,2)]
print(li3)
# 推导式结合if条件句
li4 =['data{}'.format(i) for i in range(1,100) if i % 2 == 1]
print(li4)"""
需求二:如何快速生成一个["data0","gy1","data2","gy3",...,"data98","gy99"]
"""
# 常规写法
li = []
for i in range(100):if i % 2 == 0:li.append("data{}".format(i))else:li.append("gy{}".format(i))
print(li)# 三元运算符
# n = int(input("请输入一个数字"))
# number = "大于10" if 10 < n else "小于10"
# print(number)# 推导式结合三元运算符的使用
res = ["data{}".format(i) if i%2==0 else "gy{}".format(i) for i in range(100)]
print(res)

字典推导式:

"""
语法
1.字典推导式基本语法
dic = {k:v for x in xxx}
2.字典推导式结合 if进行过滤
dic = {k:v for x in xxx if xx}
3.字典推导式结合 三元运算符使用
dic = {k:v if xx else k1:v1 for x in xxx}
"""# 需求:有一个列表li,把他转换为一个元素下表为键,值为元素的字典格式的数据
# 常规语法li = ['a','b','c','d','e','f','g','h']
dic = {}
for i, j in enumerate(li):dic[i] = j
print(dic)# 字典推导式
dic1 = {i:j for i, j in enumerate(li)}
print(dic )# 例题
cookie='sensorsdata2015js=distinctd217c1c1e7d261204ice_i; ' \'Token=07b608b2b6b54ec6aa4c95bd7f5cc1d48842f; ' \'Userid=021003a060271958.882586769905111041; ' \'TGC=U'
# res = cookie.split(';')
# dic2 = {}
# # strip去除空格
# for i in res:
#     d = i.split('=')
#     key = d[0].strip()
#     value = d[1].strip()
#     dic2[key] = value
# print(dic2)dic3 = {item.split('=')[0] : item.split('=')[1] for item in cookie.split(';')}
print(dic3)# 双重for循环
dic4 = {k : v  for item in cookie.split(';') for k,v in [item.split('=')]}
print(dic4)

集合推导式和生成器表达式

"""
列表推导式 : [x for x in xxx]
字典推导式 : {k:v for x in xxx}
集合推导式 : {x for x in xxx}
生成器推导式 : (x for x in xxx)
"""
# 集合推导式
se = {i for i in range(10)}
print(se)
# 生成器表达式--->返回的是一个生成器对象(不是元祖)
gen = (i for i in range(10))
print(gen)

练习
1. 生成包含1到100之间的10个随机数的列表

# 方法一 常规方法
liss = []
for i in  range(10):s = random.randint(1,100)liss.append(s)
print(liss)# 方法二 列表推导式
lir = [ random.randint(1,100) for i in range(10)]
print(liss)

2. 有四个数字:1、2、3、4能组成多少个互不相同且无重复数字的三位数?各是多少?

# 方法一 常规方法
lis1 = [1,2,3,4]
for i in lis1:for j in lis1:for k in lis1:if i != j and j !=k and k != i:print(i,j,k)
# 方法二 列表推导式
lis = [x * 100 + y * 10 + z for x in range(1, 5) for y in range(1, 5) for z in range(1, 5) ifx != y and x != z and y != z]
print(lis)

3. 通过字典推导式,颠倒字典的键名和值:将{‘py’: “python09”, ‘java’: “java09”}
转换为: {‘python09’: “py”, ‘java09’: “java”}

dic = {'py': "python09", 'java': "java09"}
dic1 = {v:k for k,v in dic.items() }
print(dic1)

4. 将字典{‘x’: ‘A’, ‘y’: ‘B’, ‘z’: ‘C’ }
通过推导式转换为:[‘x=A’,‘y=B’,‘z=C’]

dic2 = {'x': 'A', 'y': 'B', 'z': 'C' }li1 = ['{}={}'.format(k,v) for k,v in dic2.items()]
li2 = [f'{k}={v}' for k,v in dic2.items()]

5. Names=[‘python’,‘java’,‘php’,‘c’,‘c++’,‘django’,‘unittest’,‘pytest’,‘pymysql’]
,请通过列表推导式,获取names中字符串长度大于4的元素

Names=['python','java','php','c','c++','django','unittest','pytest','pymysql']
new_name = []
for i in Names:if len(i) > 4:new_name.append(i)
print(new_name)# 方法二 列表推导式names = [i for i in Names if len(i)>4]
print(names)

6. 通过列表推导式完成下面数据类型转换。
将 ["{‘a’:11,‘b’:2}", “[11,22,33,44]”] 转换为以下格式: li1 = [{‘a’: 11, ‘b’: 2}, [11, 22, 33, 44]]

# 考察列表推导式
li = ["{'a':11,'b':2}", "[11,22,33,44]"]
# 方法一
new_list = []
for i in li:res=eval(i)new_list.append(res)
print(new_list)# 方法二 列表推导式
res = [ eval(i) for i in li ]
print(res)

http://www.ppmy.cn/news/335879.html

相关文章

python常用的内置函数filter、map、eval、exec、all、all

python常用的内置函数 目录 一、filter 过滤函数二、map函数三、eval函数四、exec函数五、all函数六、 any函数 一、filter 过滤函数 filter()函数用于过滤序列&#xff0c;过滤掉不符合条件的元素&#xff0c;返回符合条件的元素组成新列表 # 实例1 取出列表中大于10的数 l…

测试开发面试题总结

测试开发面试题 1. 通过列表推导式完成下面数据类型转换。将 ["{‘a’:11,‘b’:2}", “[11,22,33,44]”] 转换为以下格式&#xff1a; li1 [{‘a’: 11, ‘b’: 2}, [11, 22, 33, 44]]2. Names[python,java,php,c,c,django,unittest,pytest,pymysql],请通过列表推导…

python搭建图书管理系统

一、项目介绍&#xff1a; 图书管理系统&#xff1a; 1.功能模块&#xff1a; 2.图书信息 二、环境准备 1.数据库的存储方式&#xff1a;mysql 2.通过云服务器安装一个mysql数据库&#xff0c;可参考博客 安装mysql数据库 3.登录数据库&#xff0c;创建一个表 create tab…

python的单例模式详解

一、什么是单例模式 单例模式&#xff08;Singleton Pattern&#xff09;是一种常用的软件设计模式&#xff0c;该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中&#xff0c;某个类只能出现一个实例时&#xff0c;单例对象就能派上用场 比如&#xff0…

BMW Series3/5/7

3-Series 第一代&#xff0c;E21&#xff0c;1975。有些许粗糙&#xff0c;过于简单。 第二代&#xff0c;E30&#xff0c;1984。最喜欢的一代&#xff0c;外观新颖大气。 第三代&#xff0c;E36&#xff0c;1991。外观开始变得有些现代了&#xff0c;介于复古和现代之间的产物…

2013年杰森·斯坦森动作《蜂鸟》720p.BD中英双字幕

2013年杰森斯坦森动作《蜂鸟》720p.BD中英双字幕 发布时间&#xff1a;2013-07-11 ◎译  名 蜂鸟 ◎片  名 Redemption/Hummingbird ◎年  代 2013 ◎国  家 美国/英国 ◎类  别 动作/惊悚 ◎语  言 英语 ◎字  幕 中英双字幕 ◎IMDB评分 6.3/10 from 4…

python引用计数的原理

垃圾回收机制&#xff1a; python的垃圾回收采用的是 引用计数机制为主和 分代回收机制为辅的 结合机制&#xff0c;当对象的引用计数变为0时&#xff0c;对象将被销毁&#xff0c;除了解释器默认创建的对象外&#xff08;默认对象的引用计数永远不会变成0&#xff09; python关…

vue的provide与inject如何使用?能否实现双向绑定?

provide与inject 1. provide与inject用法2.使用示例3.provide与inject实现双向绑定 vue 组件间的通信方式有很多种&#xff0c;所以使用时需要考虑哪种方式是最合适的。若仅仅是简单的隔代组件通信&#xff0c;我认为使用 provide与inject会更加方便。 1. provide与inject用法…