python_列表推导式
列表推导
生蛋的玩法,这个是一次性生完。
res = {'egg %s'%i for i in range(100) if i > 50}
print(res)
改进版,将列表生成式转换成生成器 元祖()
#将列表生成式转换成生成器
g = ('egg %s'%i for i in range(100))
print(g)
print(next(g))
省内存,一次只产生一个值,
使用列表生成式过滤文件
####普通写法
g = os.walk('c:/yang') #迭代器只能使用一次
for i in g:
for k in i[-1]:
print('%s//%s'%(i[0],k))
#列表生成式写法
res = ['%s//%s'%(i[0],k) for i in g for k in i[-1]]
print(res)
####转换成生成器,如果文件量很大的话,我可以一个一个的去输出,
g = os.walk('c:/yang')
res = ('%s//%s'%(i[0],k) for i in g for k in i[-1])
print(res)
print(next(res))
文件处理
#######文件处理,空格
g = open('a.txt')
res = (i.strip() for i in g)
# print(res)
print(list(res)) #将生成器打印出来的结果转换成list
# for i in res:
# print(i)
列表和字符串进行穿插
s = 'hello'
n = [1,2,3,4,5]
for i in n:
for k in s:
print((i,k))
res =[(i,k) for i in n for k in s]
print(res)
将b.txt文件的商品、价格、数量,转换成字典,然后取出每个商品的总价格,再进行所有商品总价的和
b.txt的内容 ############## apple 10 3 tesla 100000 2 mac 3000 2 lenovo 30000 3 chicken 10 3
with open('b.txt') as f:
# dic_list = {'name':None,'price':None,'num':None}
li = []
for line in f:
line = line.split()
# print(line)
total = float(line[-2]) *float(line[-1])
li.append(total)
print(sum(li))
# dic_list['name'] = line[0]
# dic_list['price'] = line[1]
# dic_list['num'] = line[2]
# total = float(dic_list['price']) * float(dic_list['num'])
# li.append(total)
# print(li)
# total_price = sum(li)
# print(total_price)
#这是使用列表生成式写的........还可以将它转换成生成器()
g = open('b.txt')
res =[ float(line.split()[-2])*float(line.split()[-1]) for line in g ]
res1 = sum(res) #计算所有的商品总和
# print(res) #单个商品的总价
print(res1)
# for i in res:
# print(i)
使用列表生成式将文件内容写成字典格式,写成生成器格式,如果文件内容很大,一次性打印出来会出大事,做人需谨慎!!!
with open('b.txt') as f:
res = [ i.split() for i in f]
res1 = ( {'name':i[0],'price':i[1],'total':i[2]} for i in res if float(i[1]) > 10000)
# print(res1)
# print(next(res1))
# print(next(res1))
for i in res1:
print(i)

浙公网安备 33010602011771号