是否有任何有效和简短的方法来对数组的每3个元素求和?
ar = [1, 2, 3, 4, 5, 6, 7, 8, 1]
sum_ar = [6, 15, 16]
Run Code Online (Sandbox Code Playgroud)
前3个元素1+2+3=6
接下来3个元素4+5+6=15
接下来3个元素 7+8+1=15
...
如果只剩下两个元素,求它们
我可以这样做:
y=0
s=ar.size/3
((0..s).step(3).to_a).each do |i|
sum_ar[y]=ar[i..i+2].inject(:+)
y=y+1
end
Run Code Online (Sandbox Code Playgroud)
但是在这种数组的情况下我将错过元素,其中大小不是3的精确乘法:
ar=[1, 2, 3, 4, 5, 6, 7, 8]
Run Code Online (Sandbox Code Playgroud) python 有没有初始化字典的方法?
animals = ["dog","cat","cow"]
for x in animals:
primers_pos[x]={}
Run Code Online (Sandbox Code Playgroud)
有没有类似的东西
(primers_pos[x]={} for x in animals)
Run Code Online (Sandbox Code Playgroud) 我有像'aa; a''aa;'这样的字符串 我需要删除';' (或任何其他标点符号)仅在字符串以其结尾时使用。如果它以它开头或包含在中间,则我不想删除它。
下一行导致删除“;”
gsub("(^.*)[[:punct:]]","",'a;a')
Run Code Online (Sandbox Code Playgroud) 我正在使用 python3.9 并尝试计算以下内容:
17.36-14.76。这是一个非常简单的计算,输出应该是 2.6,没有任何其他额外的数字。
但是,在 python3.9 中,我得到以下输出:
>>> 17.36-14.76
2.5999999999999996
Run Code Online (Sandbox Code Playgroud)
我知道,我可以将结果四舍五入以获得所需的输出。但是,我不明白为什么它以一种奇怪的方式计算它,因为 17.36-14.76 不是 2.5999999999999996,17.36-14.76 是 2.6。
python有一些奇怪的设置吗?
我的控制器中有以下方法:
def create
p_attr=params[:upload]
p_attr[:upload] = params[:upload][:upload].first if params[:upload][:arraydb].class == Array
@upload = Upload.new(p_attr)
respond_to do |format|
if @upload.save
@arraydb.process_name
end
end
end
Run Code Online (Sandbox Code Playgroud)
在模型中我有另一种方法,我可以处理刚刚保存的上传:
def self.process_name
update_attributes(:user_id => current_user.id)
update_attributes(:defined => "no")
end
Run Code Online (Sandbox Code Playgroud)
它给了我一个错误,该方法process_name没有定义Upload
问题是什么?如何从控制器更新模型中刚刚保存的文件的属性?提前致谢.
我有三个数组:g,a和b.g有两组一个或多个连续nil值.第一个(第二个)组包含a.size(b.size)nils.我要替换的每个nil与相应的元件中的第一(第二)组中的a(b).例如,如果:
g = [1, 2, nil, nil, nil, 3, nil, nil, nil, nil]
a = [55, 45, 56]
b = [100, 200, 300, 400]
Run Code Online (Sandbox Code Playgroud)
我希望g成为:
[1, 2, 55, 45, 56, 3, 100, 200, 300, 400]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
trend.py和test_trend.py位于同一文件夹中.我有一个带有函数find_regres_values的类Trend,它是从实例方法perform_analysis调用的.
trend.py:
class Trend:
def __init__(self, values, trend_type):
self.all_values = values
def permorn_analysis(self, first, trend_type):
#blabla
vals_reg = ["a", "b", "c", "d"]
find_regres_values(vals_reg, first, trend_type)
def find_regres_values(vals_reg, first, trend_type):
#do somethin
pass
Run Code Online (Sandbox Code Playgroud)
在test_trend.py中
from trend import find_regres_values
class ConsecRegions(unittest.TestCase):
def test_find_regres_values_decreas_min_before_max(self):
#initialize some values
output = find_regres_values(vals_reg, first, trend_type)
self.assertEqual(output, result)
Run Code Online (Sandbox Code Playgroud)
它显示了一个错误:
File "test_trend.py", line 2, in <module>
from trend import find_regres_values
ImportError: cannot import name find_regres_values
Run Code Online (Sandbox Code Playgroud)
如何导入一个功能进行测试?