首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据列表中的项目替换列表中的项目?

如何根据列表中的项目替换列表中的项目?
EN

Stack Overflow用户
提问于 2017-10-27 20:37:12
回答 3查看 55关注 0票数 0

我有两个相等的列表,它们的值是相互关联的:

代码语言:javascript
运行
复制
list1 = [29, 4, 15, 4, 5, 5]
list2 = [57.49999999999999, 89.74358974358975, 78.94736842105263, 100.0, 94.44444444444444, 57.89473684210527]

如果list1中相应的第i个值小于40,如何将list2中的第i个值更改为65.0

EN

回答 3

Stack Overflow用户

发布于 2017-10-27 20:40:20

使用三元运算符和zip的列表理解应该可以做到这一点:

代码语言:javascript
运行
复制
[40 if list2_val < 65.0 else list1_val
    for list1_val, list2_val in zip(list1, list2)]
Out[2]: [40, 4, 15, 4, 5, 40]

FWIW,这种更紧凑(但可能更难读)的语法将产生与Tobias's answer相同的结果。

根据列表的长度,您可以尝试使用pandasnumpy

代码语言:javascript
运行
复制
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame({'list1': list1, 'list2': list2})
>>> df
   list1       list2
0     29   57.500000
1      4   89.743590
2     15   78.947368
3      4  100.000000
4      5   94.444444
5      5   57.894737
>>> df['list1_new'] = np.where(df['list2'] < 65, 40, df['list1'])
   list1       list2  list1_new
0     29   57.500000         40
1      4   89.743590          4
2     15   78.947368         15
3      4  100.000000          4
4      5   94.444444          5
5      5   57.894737         40
票数 2
EN

Stack Overflow用户

发布于 2017-10-27 20:40:30

你应该像我在评论中写的那样使用zip,我认为这将是最干净的解决方案。

代码语言:javascript
运行
复制
new_list1 = []
for a, b in zip(list1, list2):
    if b < 65.0:
        new_list1.append(40)
    else:
        new_list1.append(a)
票数 2
EN

Stack Overflow用户

发布于 2017-10-27 20:44:47

您必须对list2进行迭代,以找出哪个索引的值小于65.0。使用此索引号,您可以替换list1中的第n个值:

代码语言:javascript
运行
复制
list1 = [29, 4, 15, 4, 5, 5]
list2 = [57.49999999999999, 89.74358974358975, 78.94736842105263, 100.0, 
94.44444444444444, 57.89473684210527]

for i in range(0, len(list1)):

  if list2[i] < 65.0:
    list1[i] = 40


print(list1)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46975215

复制
相关文章

相似问题

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