我有一個列表List(1,2,3,4)
並希望所有的子表獲得通過移除一個元素:如何通過刪除Scala中的一個元素從列表中獲得所有可能的子列表?
List(2,3,4)
List(1,3,4)
List(1,2,4)
List(1,2,3)
什麼是最簡單的方法是什麼?
我有一個列表List(1,2,3,4)
並希望所有的子表獲得通過移除一個元素:如何通過刪除Scala中的一個元素從列表中獲得所有可能的子列表?
List(2,3,4)
List(1,3,4)
List(1,2,4)
List(1,2,3)
什麼是最簡單的方法是什麼?
如果你的意思是「讓每個位置在列出」,則:
val x = List(1,2,3,2)
x.indices.map(i => x.take(i) ++ x.drop(i+1))
// List(2, 3, 2) // skipped index 0
// List(1, 3, 2) // skipped index 1
// List(1, 2, 2) // skipped index 2
// List(1, 2, 3) // skipped index 3
如果你的意思是「讓每個獨特元素在列出」,則:
x.distinct.map(e => x.filter(_ != e))
// List(2, 3, 2) // filtered out 1s
// List(1, 3) // filtered out 2s
// List(1, 2, 2) // filtered out 3s
我想通了:
val x = List(1,2,3,4)
x.map(i => sizes - i)
你的意思是'x'而不是'sizes'嗎?如果是這樣,這對'x = List(1,2,3,2)'不起作用。它也使用'-',這已被棄用。 – dhg
你是對的,謝謝。 –
List(1, 2, 3, 4).combinations(3).toList
,或者更一般地,
list.combinations(list.size - 1) // use the Iterator -- combinations can be huge in size
'list(1,2,3,2).combinations(3).foreach(println)'不會打印出'2,3,2'怎麼樣? –
+1謝謝,我想我雖然想出了一個稍微簡單的版本。 –