python_zip()并行迭代_推导式_ZHOU125disorder_

zip()

我们可以通过 zip()函数对多个序列进行并行迭代,zip()函数在最短序列"用完"时就会停止
name = ("卡卡西", "我爱罗", "波风水门")
age = (30, 24, 28)
jobs = ("6代火影", "4代风影", "4代火影")
for name, age, jobs in zip(name, age, jobs):
    print("{0}--{1}--{2}".format(name, age, jobs))		# format为字符串的格式化的方法

卡卡西--30--6代火影
我爱罗--24--4代风影
波风水门--28--4代火影

如果对于zip()方法不太感冒可以使用以下的传统方法

name = ("卡卡西", "我爱罗", "波风水门")
age = (30, 24, 28)
jobs = ("6代火影", "4代风影", "4代火影")
for i in range(3):
    print("{0}--{1}--{2}".format(name[i], age[i], jobs[i]))

卡卡西--30--6代火影
我爱罗--24--4代风影
波风水门--28--4代火影

推导式

  • 列表推导式
# 推导式
# 列表推导式
# [表达式 for item in 可迭代对象 ]
list_one = [n for n in range(1, 5)]
print(list_one)
list_two = [j*3 for j in range(1, 5)]
print(list_two)

# 普通方法
list = []
for w in range(1,5):
    list.append(w)
print(list)

# [表达式 for item in 可迭代对象 if 条件判断]
list_three = [m*3 for m in range(1, 99) if(m % 8 == 0)]
print(list_three)

# 遍历字符串
list_four = [i for i in 'i love you']
print(list_four)

# 两个循环
cells = [(row, col) for row in range(1, 3) for col in range(1, 3)]
print(cells)
# 普通写法
list00 = []
list01 = []
list03 = []
for m in range(1, 3):
    for n in range(1, 3):
        list03.append((m, n))
print(list03)
  • 字典推导式
# 推导式
# 字典推导式
# 字典的推导式生成字典对象,格式如下: {key_expression : value_expression for 表达式 in 可迭代对象}
# 统计文本中字符出现的次数:
text = 'my name is content'
char_count = {c: text.count(c) for c in text}
print(char_count)

# 普通方法
# 列表方法
# 1.目标字符串转为列表
value = 'my name is content'
list = list(value)
# 2.用一个列表记录总共多少种字符
new_list = []
for i in list:
    new_list.append(i)
# 3.用一个字典记录结果,遍历列表,求count()
dictionary = {}
for i in new_list:
    dictionary[i] = list.count(i)
print(dictionary)

# 字典方法
def strcount( a ):
    # 定义一个空字典
    b = {}
    # 求出字符串的长度
    c = len(a)
    i = 0
    while i < c:
        if a[i] in b:
            b[a[i]] += 1
        else:
            b[a[i]] = 1
        i += 1
    # 遍历字典
    for item in b.items():
        print(item)
if __name__ == '__main__':
    a ="my name is content"
    strcount(a)
  • 集合推导式
# 集合推导式生成集合,和列表推导式的语法格式类似:
# {表达式 for item in 可迭代对象}
aggregate_one = {x for x in range(1, 5)}
print(aggregate_one)
# {表达式 for item in 可迭代对象 if 条件判断}
aggregate_two = {y*3 for y in range(1, 100) if(y % 8 == 0)}
print(aggregate_two)
  • 生成器推导式(生成元组)
generator_one = (x for x in range(1, 4))
print(generator_one)
print(tuple(generator_one))
print(tuple(generator_one))
# <generator object <genexpr> at 0x0000024E696AD660>
# (1, 2, 3)
# ()

generator_two = (y for y in range(1,4))
for y in generator_two:
    print(y, end=',')
print(tuple(generator_two))
# 1,2,3,()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
请解释分析下面这段程序:%%%无序充电投标 clear clc load data_disorder Pch=[Pch_CS1_disorder;Pch_CS2_disorder;Pch_CS3_disorder;Pch_CS4_disorder];%充电站充电功率 %市场出清问题 Link=zeros(24,96);%时段换算矩阵(日前1h换算为实时15min) for i=1:24 Link(i,4*i-3:4*i)=1; end Loadcurve=[0.955391944564747,0.978345604157644,1,0.995019488956258,0.972932005197055,0.970333477695972,0.930489389346037,0.890428757037679,0.902771762667822,0.941966219142486,0.911000433087917,0.862061498484192,0.840190558683413,0.831095712429623,0.756604590731919,0.671719359029883,0.611520138588133,0.582936336076224,0.572542226071893,0.574707665656128,0.587267215244695,0.644218276310091,0.755521870939801,0.884798614118666]; Loadcurve=Loadcurve*Link;%换成96个时段 PL_base=[5.704;5.705;5.631;6.518;4.890;5.705;5.847]*1000;%负荷分布 PL=PL_base*Loadcurve;%基础负荷(负荷曲线从08:00开始算起,即第9个时段) Pf=sdpvar(7,96);%馈线功率 Pf(1,:)=PL(1,:)+Pch(1,:);Pf(2,:)=PL(2,:);Pf(3,:)=PL(3,:);Pf(4,:)=PL(4,:)+Pch(2,:);Pf(5,:)=PL(5,:)+Pch(3,:);Pf(6,:)=PL(6,:);Pf(7,:)=PL(7,:)+Pch(4,:);%馈线功率组成 Pg=sdpvar(10,96);%发电商分段电量 Pg_step=1000*[20,5,3,2,2,2,2,2,2,inf]';%报价区间 Price_DSO=[3:12]'*0.1;%分段电价 Obj=0.25*sum(sum((Price_DSO*ones(1,96)).*Pg));%目标为用电费用最小 Constraint=[0<=Pg<=Pg_step*ones(1,96),sum(Pg)==sum(Pf)];%约束条件 optimize(Constraint,Obj);%求解线性规划问题 Pg=double(Pg);%发电机功率 Pf=double(Pf);%馈线功率 isPg=(Pg>0);%为了计算出清电价,计算发电机分段选择情况 DLMP=sum(isPg)/10+0.2;%出清电价计算 %绘图 figure(1)%节点边际电价 stairs(DLMP); xlabel 时间 ylabel 电价(元/kWh) ylim([0.3,1.3]) figure(2)%负荷曲线 hold on plot(sum(PL)/1000); plot(sum(Pf)/1000,'r.-'); xlabel 时间 ylabel 负荷(MW) legend('基础负荷','无序充电负荷') Cost=sum(sum(Pch).*DLMP);%总用电费用 result_disorder.Cost=Cost;result_disorder.DLMP=DLMP;result_disorder.Pf=Pf;result_disorder.Pg=Pg;%结果保存 save('result_disorder','result_disorder');
最新发布
06-14

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值