我想找到一个多维数组的每一行的总和,并且总和是一个数组,例如,对于[[1,2,3],[1,1,1]]
,我想得到[6,3]
。
我尝试了以下内容:
arr = [[1,2,3],[3,2,1],[2,1,3]]
print arr.each{|row| row.each{|column| puts column}}
结果:
1
2
3
3
2
1
2
1
3
[[1, 2, 3], [3, 2, 1], [2, 1, 3]]
我正在努力。我仍然不完全理解each
迭代器。任何帮助将不胜感激。
答案 0 :(得分:4)
对于ruby 2.4.0或更新版
a.map { |suba| suba.sum }
或只是
a.map(&:sum)
对于2.4.0之前的红宝石
a.map { |suba| suba.inject(0, :+) }
答案 1 :(得分:3)
[[1,2,3],[1,1,1]].map{|a| a.inject(0, :+)} # => [6, 3]
如果有可能任何子数组都为空,那么你需要添加初始<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>ATP</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" type="text/css">
<link rel="stylesheet" href="node_modules/font-awesome/css/font-awesome.min.css" />
<link rel="stylesheet" href="node_modules/perfect-scrollbar/dist/css/perfect-scrollbar.min.css" />
<link rel="stylesheet" href="css/style.css" />
<link rel="stylesheet" href="css/checkbox-style.css">
<link rel="shortcut icon" href="images/favicon.png" />
</head>
<body>
<div class="container-scroller">
<div class="container-fluid">
<div class="row">
<div class="content-wrapper full-page-wrapper d-flex align-items-center auth-pages">
<div class="card col-lg-4 mx-auto">
<div class="card-body px-5 py-5">
<h3 class="card-title text-left mb-3">Login</h3>
<form action="Login" method="post">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
<input type="text" class="form-control p_input" name="username" placeholder="Username">
</div>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
<input type="password" class="form-control p_input" name="password" placeholder="Password">
</div>
</div>
<div class="form-group d-flex align-items-center justify-content-between">
<div class="checkbox checkbox-primary">
<label><input type="checkbox">Remember me</label>
</div>
</div>
<div class="text-center">
<button type="submit" class="btn btn-primary btn-block enter-btn">LOG IN</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="node_modules/jquery/dist/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>
<script src="node_modules/perfect-scrollbar/dist/js/perfect-scrollbar.jquery.min.js"></script>
<script src="node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="js/misc.js"></script>
</body>
</html>
,正如Ursus指出的那样。
' word \n'.strip() # -> 'word'
答案 2 :(得分:1)
[[1,2,3],[1,1,1]].map { |a| a.inject(0, :+) } # => [6 , 3]
见:
答案 3 :(得分:0)
&#34;如何找到每一行的总和&#34;
arr = [[1,2,3], [1,1,1]]
print arr.each{|row|
&lt; - 这里有每一行
所以现在row
最初包含[1,2,3]
。正如其他人所提到的,您可以在此处应用sum
。 (你不需要领先的print
)。
arr.each{|row| puts row.sum}
结果:
6
3
但更好的方法是使用map
。正如我多年前告诉Ruby新手的那样,当你想要将每个元素改为其他元素时,可以考虑map
,换句话说就是&#34; 1:1映射&#34;输入到输出。在这种情况下,输出为row.sum
:
sums = arr.map{|row| row.sum}
结果:
[6, 3]