首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时遍历三个列表:嵌套循环不起作用

同时遍历三个列表:嵌套循环不起作用
EN

Stack Overflow用户
提问于 2017-08-18 04:45:32
回答 2查看 717关注 0票数 1

我目前正在尝试同时遍历三个列表:

代码语言:javascript
复制
list_weight = [0.9,0.3,0.6,0.4]
list_reliability = [0.8,0.5,0.2,0.8]
belief_CRED0 = [create_belief_matrix ('ACBA').iloc[0]] 

belief_CRED0
Out[40]: 
[1    0.562500
 2    0.562500
 3    0.391304
 4    0.391304
 Name: CRED0, dtype: float64]

首先,我创建了一个嵌套循环:

代码语言:javascript
复制
for belief in belief_CRED0:
    for weight in list_weight:
        for reliability in list_reliability:
            m = [(1/(1+weight-reliability))*(weight*belief)]
print(m)

但结果却完全不同。所以我试着这样做:

代码语言:javascript
复制
for belief, weight, reliability in zip(belief_CRED0, list_weight, list_reliability):
    m = [(1/(1+weight-reliability))*(weight*belief)]
print(m)

但结果也是错误的:

代码语言:javascript
复制
m
Out[42]: 
[1    0.460227
 2    0.460227
 3    0.320158
 4    0.320158
 Name: CRED0, dtype: float64]

从结果看,循环似乎只使用了相应列表中的第一个权重和可靠性(权重= 0.9,可靠性= 0.8)。

正确的输出应该是:

代码语言:javascript
复制
[1    0.460227
 2    0.210937
 3    0.16770171
 4    0.26086933

我该怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-18 05:05:19

如果它们都是pandas.Seriesnumpy.array,那么您可以直接执行此操作,例如:

代码语言:javascript
复制
>>> weight = pd.Series(list_weight, index=range(1, 5))
>>> reliability = pd.Series(list_reliability, index=range(1, 5))
>>> 1/(1+weight-reliability)*(weight*belief_CRED0)
1    0.460227
2    0.210937
3    0.167702
4    0.260869
dtype: float64

numpy类似

代码语言:javascript
复制
>>> weight = np.array(list_weight)
>>> reliability = np.array(list_reliability)
>>> 1/(1+weight-reliability)*(weight*belief_CRED0)
1    0.460227
2    0.210937
3    0.167702
4    0.260869
Name: CRED0, dtype: float64
票数 1
EN

Stack Overflow用户

发布于 2017-08-18 05:05:04

zip上的for循环中有一个小错误(这是最好的方法)。累积结果..。而不是一直赋值给m

代码语言:javascript
复制
m = []
for belief, weight, reliability in zip(belief_CRED0, list_weight, list_reliability):
    m.append(weight*belief/(1+weight-reliability))
print(m)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45744693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档