Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将一个列表的元素除以另一个列表的元素

将一个列表的元素除以另一个列表的元素
EN

Stack Overflow用户
提问于 2018-02-26 13:53:20
回答 3查看 282关注 0票数 4

我有两个列表,比如说

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a = [10, 20, 30 , 40, 50 , 60] 
b = [30, 70, 110]

如您所见,列表b由一个列表的元素和组成,其中window = 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
b[0] = a[0] + a[1] = 10 + 20 = 30 etc.

我如何才能获得另一个列表,它将包含给定窗口中列表的a元素和b元素的一部分?在我的示例中,我想要获取列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
c = [10/30, 20/30, 30/70, 40/70, 50/110, 60/110]
EN

回答 3

Stack Overflow用户

发布于 2018-02-26 13:58:34

您可以对这两个任务使用列表理解(创建bc列表)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a = [10, 20, 30, 40, 50, 60]

b = [i+j for i, j in zip(a[::2], a[1::2])]
print(b)  # [30, 70, 110]

c = [x / b[i//2] for i, x in enumerate(a)]
print(c)  # [0.3333333333333333, 0.6666666666666666, 0.42857142857142855, 0.5714285714285714, 0.45454545454545453, 0.5454545454545454]

如果您确实需要分数,则可以使用fractions模块及其Fraction数据类型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from fractions import Fraction

# same code as before

c = [Fraction(x, b[i//2]) for i, x in enumerate(a)]
print(c)  # [Fraction(1, 3), Fraction(2, 3), Fraction(3, 7), Fraction(4, 7), Fraction(5, 11), Fraction(6, 11)]

备注

作为@LaurentH。注意,上面的方法只适用于大小为2的块(你称之为窗口)。对于更一般的方法,你可以定义一个生成器,它将为你yield它们:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# taken from https://stackoverflow.com/a/312464/6162307
def yield_chunks(l, n):
    """Yield successive n-sized chunks from l."""
    for i in range(0, len(l), n):
        yield l[i:i + n]    

b = [sum(chunk) for chunk in yield_chunks(a, 2)]
# same code

n = 3示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
n = 3
b = [sum(chunk) for chunk in yield_chunks(a, n)]
print(b)  # [60, 150]
c = [x / b[i//n] for i, x in enumerate(a)]
print(c)  # [0.16666666666666666, 0.3333333333333333, 0.5, 0.26666666666666666, 0.3333333333333333, 0.4]
票数 4
EN

Stack Overflow用户

发布于 2018-02-26 13:58:18

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a = [10, 20, 30 , 40, 50 , 60] 
b = [30, 70, 110]

# take each value in a (multiply by 1.0 to get a double), and divide by the value in b in the corresponding index (i.e. indices 0,1 in a correspond with index 0 in b, and so on...)
c = [val*1.0/b[idx//2] for idx,val in enumerate(a)]

# here is the calculation using strings, to get the desired output by OP
d = ['{}/{}'.format(val, b[idx//2]) for idx,val in enumerate(a)]

print '{}\n{}'.format(c, d)

输出=

[0.3333333333333333, 0.6666666666666666, 0.42857142857142855, 0.5714285714285714, 0.45454545454545453, 0.5454545454545454]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
['10/30', '20/30', '30/70', '40/70', '50/110', '60/110']
票数 1
EN

Stack Overflow用户

发布于 2018-02-26 14:21:42

这是我的建议,一个函数用于求和,一个函数用于分数,列表和窗口宽度作为参数。它不使用外部包,并且非常简短,易于阅读和理解:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Sum with a given window
def sumWithWindow(aList, window = 2):
    res = []
    mySum = 0
    for i,elem in enumerate(aList):
        mySum += elem
        if (i+1) % window == 0:
            res.append(mySum)
            mySum = 0
    return (res)


# Fraction with a given window
def fractionWithWindow(aList, window = 2):
    res = []
    b = sumWithWindow(aList, window)
    for i,elem in enumerate(aList):
        res.append(elem/b[int(i/window)])
    return (res)

# Example
a = [10, 20, 30 , 40, 50 , 60]
print(sumWithWindow(a, 2))
print(fractionWithWindow(a,2))

这也是单行风格的版本,带有列表理解,可读性稍差,但非常简短:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Sum with a given window
def sumWithWindow(aList, window = 2):
    return [sum(aList[n:n+window]) for n in range(0,len(aList),window)]

# Fraction with a given window
def fractionWithWindow(aList, window = 2):
    return [elem/sumWithWindow(aList,window)[i//window] for i,elem in enumerate(aList)]

# Example
a = [10, 20, 30 , 40, 50 , 60]
print(sumWithWindow(a, 2))
print(fractionWithWindow(a,2))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48990152

复制
相关文章
python比较列表中元素大小和列表中元素的判定
列表的判定主要是判定列表中是否包含某个元素,使用逻辑运算符判定就可以了;列表的比较稍微复杂一些,首先比较的是两个列表中对应元素的大小,如果元素值一样,再比较列表长度。
python自学网
2021/12/01
5.7K0
python比较列表中元素大小和列表中元素的判定
列表元素分组
有这样一种场景,有三个列表a、b、c。我们想要把每一个列表中的第一个元素取出来分为一组,第二元素取出来分为一组、第三个元素取出来分为一组,以此类推。该怎么做呢?你可以自己想一想,再来看下面的实现过程。
TalkPython
2019/05/24
1.1K0
再谈谈列表元素的删除
之前(以及更早之前)都提到了列表元素的删除,也提到过几种方法,有兴趣的朋友可以去看看,其中一种个人比较倾向的写法大概是这个样子(C++):
用户2615200
2018/08/02
1.8K0
再谈谈列表元素的删除
python删除列表元素
remove 删除单个元素,删除首个符合条件的元素,按值删除,返回值为空 List_remove = [1, 2, 2, 2, 3, 4] print(List_remove.remove(2)) print("after remove", List_remove) # None # after remove [1, 2, 2, 3, 4] ---- pop 删除索引位置元素,无参情况下删除最后一个元素,返回删除的元素值 List_pop = [1, 2, 2, 2, 3, 4] print(List
演化计算与人工智能
2020/08/14
1.6K0
【Python】列表 List ① ( 数据容器简介 | 列表 List 定义语法 | 列表中存储类型相同的元素 | 列表中存储类型不同的元素 | 列表嵌套 )
Python 中的 数据容器 数据类型 可以 存放多个数据 , 每个数据都称为 元素 , 容器 的 元素 类型可以是任意类型 ;
韩曙亮
2023/10/11
3140
【Python】列表 List ① ( 数据容器简介 | 列表 List 定义语法 | 列表中存储类型相同的元素 | 列表中存储类型不同的元素 | 列表嵌套 )
Python随机打乱列表中的元素
首先生成原列表的拷贝a_copy,新建一个空列表result,然后随机选取拷贝列表中的值存入空列表result,然后删除
宇宙之一粟
2020/10/26
6.7K0
python列表添加元素的方法_列表添加元素的三种方法
Python向列表中添加元素: append() extend() insert()
全栈程序员站长
2022/11/04
4.9K0
习题31:访问列表元素
访问列表中的元素,使用下标的方式,通常以0开始(为什么是0而不是1),这里程序的设计就是如此,个人觉得没有必要纠结,如有兴趣,可自行查看资料
py3study
2018/08/02
6430
如何去掉列表中重复的元素
列表,在Python中是最常见的一种数据类型,对它了解的越多,编程的效率就越高。
TalkPython
2019/10/29
7.7K0
如何去掉列表中重复的元素
列表,表格与媒体元素
一.列表   列表就是信息资源的一种展示形式  1.列表及其应用    1)无序列表      无序列表由<ul>标签和<li>标签组成,使用<ul>标签作为无序列表的声明,使用<li>标签作为每个列表项的起始     语法: <ul>      <li>第一项</li>      <li>第二项</li> </ul>    特性:     >没有顺序,每个<li>标签独占一行(块元素)       >默认<li>标签项前面有个实心的小圆点       >一般用于无序类型的列表,如导航,侧边栏新闻等
房上的猫
2018/03/14
3K0
Html 列表、表格、媒体元素
列表就是信息资源的一种展示形式,它可以使信息结构化和条理化,并以列表的样式显示出来,以便浏览者能更快捷地获得相应的信息。
久绊A
2023/03/24
1.5K0
python遍历列表删除元素与修改元素
如果是修改元素,在遍历时如果想用迭代器对元素进行修改,是不会持久化的,这时候需要使用下标来处理。 像这样: for i in range(len(a)): a[i] += str(i)
看、未来
2021/09/18
1.6K0
JavaScript删除列表中指定元素,过滤指定元素
作为工具人的我,昨晚有人问我用js怎么删除一个列表中等于0的元素 一开始我想的是用循环,后来百度发现有个东西叫做filter <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>删除0</title> </head> <body> <div
SingYi
2022/07/14
1.6K0
JavaScript删除列表中指定元素,过滤指定元素
python修改列表元素的方法有哪些
增删改查是处理数据最常见的方法,前两种说过了,这里就要说说python提供的两种修改列表元素的方法,一种是修改单个元素,还有一种的修改一组数据的方法。
python自学网
2021/12/01
2.2K0
python修改列表元素的方法有哪些
Python——去除列表中的重复元素
set(['I', 'I', 'M', 'E']) set(['I', 'E', 'M']) 集合中,没有重复的元素。利用集合这种数据结构的特性,可以去除列表中的重复元素。 一个列表中可能含有重复元素,使用set()可以实现列表的去重处理,但是无法知道哪些元素是重复的,下面的函数用于找出哪些元素重复了,以及重复的次数。 from collections import Counter a = [1,4,2,3,2,3,4,2] b = Counter(a) #求数组中每个数字出现了几次 print(b)
瑞新
2020/07/07
5K0
【说站】python处理列表的部分元素
1、处理列表的部分元素称之为切片,创建切片,可指定要使用的第一个元素和最后一个元素的索引。
很酷的站长
2022/11/24
1.2K0
【说站】python处理列表的部分元素
Python 列表如何添加元素
添加前: 'my', 'name', 'is', 'mark', 'age', 18
用户8418197
2022/02/13
1.8K0
Python 列表元素分组,比如 [1,
# 生成一个1到20的列表 a=[x for x in range(1,21)] # 把a列表切片,并赋值给b列表,x为0到20且步长为3的列表,在这里具体为[0,3,6,9,12,15,18] # 把x带入,b列表为[a[0:0+3],a[3:3+3]……[a[18:18+3] b=[a[x:x+3] for x in range(0,20,3)] print(a) print(b) 输出为 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1
py3study
2020/01/19
1K0
HTML标记语法之列表元素
1.无序列表     <ul>        <li type=”项目符号类型”></li>        <li type=”项目符号类型”></li>        <li type=”项目符号类型”></li>         ……         <li type=”项目符号类型”></li>     </ul>     type的可取值:disc:●、circle:○、square:■. 2.有序列表 <ol type=”项目符号类型”start = “列表起点(为数字)” >        <l
阿豪聊干货
2018/08/09
1.8K0
Python修改列表元素小技巧
这里使用的就是切片这种手法来给list列表做整段元素修改的,在进行这种操作时,如果不指定步长(step 参数),Python 就不要求新赋值的元素个数与原来的元素个数相同;这意味,该操作既可以为列表添加元素,也可以为列表删除元素。
程序员皮克
2021/12/17
9000
Python修改列表元素小技巧

相似问题

将列表除以另一个列表的元素

411

将一个列表的元素除以另一个列表的元素

517

将嵌套列表中的连续元素除以另一个列表中的连续元素

632

如何将一个列表的元素除以另一个维度不同的列表的元素?

217

如何将一个列表中元素的差异除以另一个列表中的元素?

59
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文