【问题标题】:Exponential powers with range [duplicate]范围内的指数幂[重复]
【发布时间】:2017-11-20 03:15:43
【问题描述】:

我的代码有问题

def bconver(n,b):
    for i in range(n):
        x = b ** i

我试图让b 得到 n 范围内所有 i 值的幂。我需要能够获取这些值并将它们除以 n 允许我将其更改为任何基数。

我已经尝试过这段代码,但它不起作用,因为之后我无法划分这些值。另外,我需要不在列表中的答案

x = [b ** i for i in range(n)]  

【问题讨论】:

  • 不,我的问题非常不同,我只问如何获取i 的所有值并将它们置于 b 的幂。没有询问基本转换问题
  • 很公平,那么我不明白你对我的回答的评论。

标签: python range exponent


【解决方案1】:

您可以将列表理解中的每个值除以n

x = [b ** i for i in range(n)]  
x_over_n = [a/n for a in x]

编辑:

def x_to_the_i_over_n(x, i, n):
    return x**i / n

n = 4
x = 123
results = []
for i in range(n):
    results.append(x_to_the_i_over_n(x, i, n))

编辑 2:

import numpy

b = numpy.array(range(10))
b**2
#--> array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81])

b**2 / 4
#--> array([  0.  ,   0.25,   1.  ,   2.25,   4.  ,   6.25,   9.  ,  12.25, 16.  ,  20.25])

【讨论】:

  • 哦,哇,我忽略了,谢谢,但我需要它而不需要列表
  • 你到底需要什么?
  • 我要解决的总体问题是将基数为 10 的数字从任何基数更改为任何基数,而不需要 abc 的东西。我需要得到的最终答案是一个不在列表中的数字
  • 我只需要能够在没有列表的情况下进行指数表示法
  • 对不起,我不明白“没有 abc”是什么意思?
【解决方案2】:

您可以在该列表推导中执行您想要的任何操作。例如,

x = [(b ** i) / n for i in range(n)]

听起来像是您正在寻找的最终结果。如果您想要中间结果,只需使用另一个列表推导:

x = [b ** i for i in range(n)]
x_divided_by_n = [element / n for element in x]

如果您想要更紧凑的方式来表达这些类型的操作,请考虑使用numpy

【讨论】:

  • 我将如何对 x 和 n 使用模数。从你给出的第一个例子
  • @nick 标准模运算符 % 在 Python 中工作(例如,5 % 3 = 2)。
  • 是的,我明白,但是在执行 x = [(b ** i) / n for i in range(n)] 之后,例如 p = n%x
  • 我也不确定这是否会更改代码,但我需要不在列表中的答案
猜你喜欢
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 2011-11-25
相关资源
最近更新 更多