Blu*_*n93 5 python list python-3.x
如何将列表的值与其索引的幂相加Python 3?
例:
[3, 0, 2] = 3^1 + 0^2 + 2^3 = 11
Run Code Online (Sandbox Code Playgroud)
我们的想法是为列表中任何可能的非负数组合创建唯一索引.这样,我可以使用列表来计算某事物的索引.
编辑:当问题得到解答时,我才意识到该方法不会为列表中的任何非负整数组合创建唯一索引.为此,假设a是可能的整数的数量,并基于接受的答案,
sum(a ** i * j for i,j in enumerate(l, 0))
Run Code Online (Sandbox Code Playgroud)
这个想法是每个数字将使索引增加一个与其在列表中的位置成指数比例的量.假设a=4(来自0于3),上面的例子变得
[3, 0, 2] = 4^0*3 + 4^1*0 + 4^2^2 = 35
Run Code Online (Sandbox Code Playgroud)
指数范围从.0到4^3-1=63.
sum(j ** i for i,j in enumerate(l, 1))
Run Code Online (Sandbox Code Playgroud)
将start参数指定enumerate为1确保索引将从1(根据需要)开始而不是从0(使用普通模式获得的默认值enumerate)开始:
>>> l = [3, 0, 2]
>>> sum(j ** i for i,j in enumerate(l, 1))
11
Run Code Online (Sandbox Code Playgroud)
在功能性的精神,你也可以利用map与count从itertools传递pow作为函数映射:
>>> from itertools import count
>>> sum(map(pow, l, count(1)))
11
Run Code Online (Sandbox Code Playgroud)
这几乎几乎同时执行; sum虽然生成器表达式提供了灵活性的轻微优势.
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |