首页 > 代码库 > 列表生成器
列表生成器
<style>li.li1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC Light"; color: #1a5568 }
li.li2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #435a66 }
li.li3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Courier New"; color: #0432ff }
li.li4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Courier New"; color: #000000 }
li.li5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Courier New"; color: #dc2354 }
li.li6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC"; color: #008200 }
li.li7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Courier New"; color: #ff2f92 }
li.li8 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Courier New"; color: #323333 }
li.li9 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Courier New"; color: #008200 }
li.li10 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #011480 }
li.li11 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC" }
li.li12 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #000000 }
span.s1 { color: #000000 }
span.s2 { color: #323333 }
span.s3 { color: #ff2f92 }
span.s4 { color: #0432ff }
span.s5 { color: #dc2354 }
span.s6 { color: #009900 }
span.s7 { font: 12.0px "Courier New" }
span.s8 { font: 18.0px Menlo }
span.s9 { font: 18.0px Menlo; color: #011480 }
span.s10 { font: 12.0px "PingFang SC" }
span.s11 { color: #008200 }
span.s12 { font: 12.0px "PingFang SC"; color: #008200 }
ul.ul1 { list-style-type: disc }</style>
- xxx
- 三元表达式
- name="alex"
- res="SB" if name == "alex" else "shuai"
- print(res)
- -------------
- SB
- 列表生成式
- 语法
- [expression for item1 in iterable1 if condition1
- for item2 in iterable1 if condition2
- for item3 in iterable1 if condition3
- ...
- for item1 in iterable1 if conditionN
- ]
- 事例一
- egg_list=[]
- for i in range(100):
- egg_list.append("egg%s"%(i))
- print(egg_list)
- #上面简写
- li = ["egg%s" %(i) for i in range(100)]
- print(li)
- #加条件
- li = ["egg%s" %(i) for i in range(100) if i>50]
- print(li)
- 事例二
- li = [1,2,3,4]
- s = "hello"
- obj = []
- for num in li:
- for str in s:
- xx = (num,str)
- obj.append(xx)
- print(obj)
- #上面简写
- obj = [(num,str) for num in li for str in s]
- print(obj)
- #只把大于2的和底下拼接
- obj = [(num,str) for num in li if num > 2 for str in s]
- print(obj)
- 列表生成器
- 优点
- 省内存 一次只产生一个值在内存里
- 应用
- 读取一个大文件的所有内容,并且处理行
- f = open("a.txt")
- #方式一:
- li = []
- for line in f:
- line=line.strip()
- li.append(line)
- print(li)
- #方式二: 列表生成式,还占内存
- li=[line.strip() for line in f]
- print(li)
- #方式三: 转化为列表生成器
- li=(line.strip() for line in f)
- print(li)
- #<generator object <genexpr> at 0x10217aa98>
- print(list(li))
- #[‘123‘, ‘123‘, ‘567‘, ‘fgg‘, ‘fghhhhh‘, ‘gdgdagfd‘, ‘dggdcbbb‘]
- sum/for/list
- sum/for/list 都是把可迭代对象变成迭代器,然后next取值,并且捕捉异常
- 事例一
- #列表是可迭代的, sum和 for/list 相同,把里面的参数变成一个迭代器,然后next取值
- print(sum([1,2,3,4]))
- num=(i for i in range(3))
- print(sum(num))
- 事例二
- #事例 计算商品的价格,后两列相乘
- #---- 文件a.txt
- apple 10 3
- tesla 1000 1
- mac 3000 2
- lenovo 200 3
- chicken 10 3
- money_l=[]
- with open("a.txt") as f:
- for line in f:
- goods=line.split() #每一行变成列表,按空格分开
- res=float(goods[-1])*float(goods[-2])
- money_l.append(res)
- print(money_l)
- # [30.0, 1000.0, 6000.0, 600.0, 30.0]
- print(sum(money_l))
- # 7660.0
- #简写
- with open("a.txt") as f:
- g=(float(line.split()[-1])*float(line.split()[-2]) for line in f)
- print(sum(g))
列表生成器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。