我是新的Scala和我正在寻找一种方法来做类似的事情
val list = List(1, 0, 1, 2, 3, 1, 2, 0, 1, 2, 0, 3, 2, 0, 1)
mylist.sortWith(_ > _).partition(_ == 1).flatten
Run Code Online (Sandbox Code Playgroud)
问题是partition()产生一个列表元组,但我需要一个列表列表.
目标是在不使用其他变量的情况下在一行中完成此工作,而不是在需求中进行优化.
一个肮脏/愚蠢的方式来实现我想要做的将是:
List(mylist.sortWith(_ > _).partition(_ == 1)._1, mylist.sortWith(_ > _).partition(_ == 1)._2).flatten
Run Code Online (Sandbox Code Playgroud)
我也想知道我是否可以抛出partition()的输出来展平它
我在下面的这个结构中有一个实体列表。如何在一次调用中使用 linq创建List<int>所有AwayTeamId和的不同列表HomeTeamId?我知道我可以在 HomeTeamId 上选择多个并获取所有这些,但我还需要包含 AwayTeamId。
class Game {
int AwayTeamId;
int HomeTeamId;
}
Run Code Online (Sandbox Code Playgroud) 如何在不使用内置的扁平功能进行球拍的情况下展平列表?
我知道flatten的默认实现是
(define (flatten lst)
(cond
((null? list)
empty)
((list? (car lst))
(append (flatten (car lst)) (flatten (cdr lst))))
(else
(cons (car lst) (flatten (cdr lst))))))
Run Code Online (Sandbox Code Playgroud)
但我不完全确定如何不使用flatten功能,因为我不知道它是如何在幕后工作.除了这段代码的实现之外,我找不到对此的良好解释.请有人解释一下
这是我非常糟糕的尝试,我几乎无能为力,因为这甚至不是很接近,也不会运行....
(define acc null)
(define (my-flatten lst)
(cond
[(null? lst) null]
[(list? (car lst)) (help-flatten (car lst)) (append (cdr lst) acc)]
[else (append (car lst) acc) (my-flatten (cdr lst))]))
(define (help-flatten subLst)
(if (null? subLst)
(set! acc null)
(append (car subLst) acc))
(help-flatten (cdr subLst)))
Run Code Online (Sandbox Code Playgroud) 我终于开始使用 Python 进行递归,并尝试计算list. 但是,我在计算嵌套list数字中的出现次数时遇到了问题。
例如
def count(lst, target):
if lst == []:
return 0
if lst[0] == target:
return 1 + count(lst[1:], target)
else:
return 0 + count(lst[1:], target)
Run Code Online (Sandbox Code Playgroud)
输出
>>> count( [1,2,3,[4,5,5],[[5,2,1],4,5],[3]], 1 )
Output: 1
Expected output: 2
有没有一种简单的方法可以在Python中展平嵌套列表?或者我可以用一种简单的方法来解释我的代码中存在嵌套列表的事实?
我想定义一个函数.flatten,它将几个元素展平为一个单独的数组.我知道以下是不可能的,但基本上我想这样做:
var flatten = function() {
var flattened = arguments.reduce(function(acc, elem) { return acc.concat(elem) }, []);
return flattened;
};
var arr = [[1,2,3], 4, 5, [6, 7]];
console.log(flatten(arr)) // => [1,2,3,4,5,6,7]
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
TypeError: arguments.reduce is not a function
Run Code Online (Sandbox Code Playgroud)
我理解上面的错误是因为参数只是类似数组,所以它没有真正数组的全部功能.所以有以下内容,但我想知道是否有更清洁的东西:
var flatten = function() {
var flattened = [].reduce.call(arguments, function(acc, elem) { return acc.concat(elem) });
return flattened;
};
Run Code Online (Sandbox Code Playgroud)
使用.reduce()重写.flatten的好方法吗?
注意:我知道还有很多其他方法可以在javascript中展平数组,但我在这里想知道的是如何使用特定的参数.
我想编写一个可以深度展平给定数组的函数。例如:
deepFlatten([]); // []
deepFlatten([1, 2, 3]); // [1, 2, 3]
deepFlatten([[1, 2, 3], ["a", "b", "c"], [1, 2, 3]]); // [1, 2, 3, "a", "b", "c", 1, 2, 3]
deepFlatten([[3], [4], [5]], [9], [9], [8], [[1, 2, 3]]]); // [3, 4, 5, 9, 9, 8, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
我尝试递归地解决这个问题,到目前为止我已经得到了这个:
var deepFlatten = function (array){
var result = [];
array.forEach(function (elem) {
if (Array.isArray(elem)) {
result.concat(deepFlatten(elem)); // problem probably lies here
} else {
result.push(elem);
}
});
return result;
}; …Run Code Online (Sandbox Code Playgroud) javascript recursion concatenation flatten multidimensional-array
我需要展平多级列表的所有级别:
import itertools
pool = [[[[[0,2],[1,3]],[[3,2],[1,0]]],"PdPd","PrisonerDilemma"],
[[[[0,3],[1,2]],[[2,3],[1,0]]],"ShSh","StagHunt"],
[[[[1,2],[3,0]],[[3,2],[1,0]]],"ChCh","Chicken"],
[[[[2,1],[0,3]],[[3,1],[0,2]]],"BaBa","Battle"]]
def flat3 (pool):
for game in pool:
l = list(itertools.chain.from_iterable(game[0]))
print(l)
Run Code Online (Sandbox Code Playgroud)
结果:
flat3 (pool)
[[0, 2], [1, 3], [3, 2], [1, 0]]
[[0, 3], [1, 2], [2, 3], [1, 0]]
[[1, 2], [3, 0], [3, 2], [1, 0]]
[[2, 1], [0, 3], [3, 1], [0, 2]]
Run Code Online (Sandbox Code Playgroud)
因此,目标是隔离并返回每个项目中的第一级,仅包含数字,例如:
[[[[[0,2],[1,3]],[[3,2],[1,0]]],"PdPd","PrisonerDilemma"]
Run Code Online (Sandbox Code Playgroud)
然后我需要将所有内容都展平到同一级别,例如:
[0,2,1,3,3,2,1,0]
Run Code Online (Sandbox Code Playgroud)
我知道有很多关于这个主题的材料,我已经找到并尝试了很多方法来做到这一点,但是似乎没有一个可以在一个以上的层次上工作,我想知道是否有一种有效的方法来做到这一点,而不重复多次执行相同的命令。有人可以帮助我吗?
给定一个如下所示的复杂对象:
case class Complex
(
id: Long,
name: String,
nested: Seq[Complex]
)
Run Code Online (Sandbox Code Playgroud)
在实际操作中,这可能会变成这样:
val stuff =
List(
Complex(1, "name1",
List(
Complex(2, "name2", List()),
Complex(3, "name3",
List(
Complex(4, "name4", List())
)
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
我需要将其变成一个平面Complex对象列表,将所有子/孙子拉起来。
val flattened =
List(
Complex(1, "name1", List()),
Complex(2, "name2", List()),
Complex(3, "name3", List()),
Complex(4, "name4", List()),
)
Run Code Online (Sandbox Code Playgroud)
您对我如何实现这一目标有任何线索/想法吗?
我尝试过的其他解决方案似乎只做简单的列表嵌套。我尝试过的事情:
这些似乎都产生了与我开始时相同的列表。
我正在创建一个脚本来将 JSON 对象转换为“字符串”文件(用于翻译目的)。这个想法是要转变:
{
"TRANSLATION1": "text1",
"TRANSLATION2": "text2"
}
Run Code Online (Sandbox Code Playgroud)
进入
"TRANSLATION1" = "text1";
"TRANSLATION2" = "text2";
Run Code Online (Sandbox Code Playgroud)
这是用以下方法完成的:
jq -r 'to_entries|map("\"\(.key)\"=\(.value|tojson);")|.[]'
好的!
现在,我的问题是嵌套对象:
{
"TRANSLATION1": "text1",
"TRANSLATION2": "text2",
"TRANSLATION3": {
"SUBTRANS1": "subtranslation1",
"SUBTRANS2": "subtranslation2",
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的结果是:
"TRANSLATION1" = "text1";
"TRANSLATION2" = "text2";
"TRANSLATION3.SUBTRANS1" = "subtranslation1";
"TRANSLATION3.SUBTRANS2" = "subtranslation2";
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?我已经挠头好几个小时了......
我需要对与此特定案例相关的 Python 功能进行解释:我有一个列表推导式,它为listA. 使用此代码:
listA = [1,1,1]
def operation(n):
result = []
*code do something*
result = [a,b,c]
return result
listB = [operation(element) for element in listA]
Run Code Online (Sandbox Code Playgroud)
我获得:
listB = [[a,b,c],[a,b,c],[a,b,c]]
Run Code Online (Sandbox Code Playgroud)
如何单独返回列表的多个元素以实现此目的?
listB = [a,b,c,a,b,c,a,b,c]
Run Code Online (Sandbox Code Playgroud)
我试过的是:
ListA = [1,1,1]
def operation(n):
result = []
*code do something*
result = [a,b,c]
for x in result:
return x
Run Code Online (Sandbox Code Playgroud)
输出:[a,a,a]代替[a,b,c,a,b,c,a,b,c]
注1:不能使用任何导入
注2:我提出了一个简单的案例,我无法在平面列表中转换列表,我需要的是能够从单个调用中返回多个值,这可能吗?谢谢