考虑下面的例子,我有一组给定的单词和一组给定的字符.我必须找出是否有一个词可以从字符列表中产生,同时尊重重复 - 即该字是多字节字符的多字节子集.因此对于字符List('a', 'p', 'q', 'r', 's'),单词"apqsrr"不是有效的解决方案,因为它包含两个'r's.我能想到的通常的解决方案是迭代单词的字符,如果在字符中找到匹配,则从字符列表中删除该字符.这可以处理重复,但我不知道如何以更实用的方式在scala中编写它.
根据我对scala的了解,我能够编写以下代码,如果没有重复的字母,它可以正常工作.
val words = List("apqsrr", "avadavat", "avail", "availability", "available",
"avalanche", "avantgarde", "avarice")
val chars = List('a', 'p', 'q', 'r', 's')
for (w <- words if w.forall(chars.contains)) yield w
// another way
words.find(_.forall(chars.contains))
Run Code Online (Sandbox Code Playgroud) 对于以下df
A B ..... THRESHOLD
DATE
2011-01-01 NaN NaN ..... NaN
2012-01-01 -0.041158 -0.161571 ..... 0.329038
2013-01-01 0.238156 0.525878 ..... 0.110370
2014-01-01 0.606738 0.854177 ..... -0.095147
2015-01-01 0.200166 0.385453 ..... 0.166235
Run Code Online (Sandbox Code Playgroud)
我必须将N,A,B,C ....等N列与THRESHOLD进行比较,然后输出结果
df['A_CALC'] = np.where(df['A'] > df['THRESHOLD'], 1, -1)
df['B_CALC'] = np.where(df['B'] > df['THRESHOLD'], 1, -1)
Run Code Online (Sandbox Code Playgroud)
如何在不为每列显式写一个语句的情况下对所有列(A,B,C ...)应用上述内容?
我有以下形式的 df
import pandas as pd
df = pd.DataFrame({'col1' : [1,1,1,2,2,3,3,4],
'col2' : ['a', 'b', 'c', 'a', 'b', 'a', 'b', 'a'],
'col3' : ['x', 'y', 'z', 'p','q','r','s','t']
})
col1 col2 col3
0 1 a x
1 1 b y
2 1 c z
3 2 a p
4 2 b q
5 3 a r
6 3 b s
7 4 a t
df2 = df.groupby(['col1','col2'])['col3'].sum()
df2
col1 col2
1 a x
b y
c z
2 a p
b …Run Code Online (Sandbox Code Playgroud) 我有一个Integer []的集合,我想从中删除一些元素,但似乎通常的删除方法不起作用.除了迭代和比较Integer []的每个元素之外,还有其他解决方法吗?以下是此问题的测试代码.
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String args[]){
List<Integer[]> subSet = new ArrayList<Integer[]>();
subSet.add(new Integer[]{0,1,2,3,4});
subSet.add(new Integer[]{0,1,2,3,5});
subSet.add(new Integer[]{0,0,0,0,0});
//prune this collection by removing an Integer[]
Integer[] elementToRemove = {0,0,0,0,0};
System.out.println( "Before " + subSet.size());
subSet.remove(elementToRemove);
System.out.println( "After " + subSet.size());
//
}
}
Run Code Online (Sandbox Code Playgroud) 我在Scala中有以下列表,我希望根据一个标准进行过滤,如果有任何元组具有重复的第一个值,请从下面的示例中我想要排除
List((a,1), (a,2))
Run Code Online (Sandbox Code Playgroud)
因为它有"a"作为重复.
我有以下两个列表,我不确定在运行时list2是空还是满,但list1将始终为非空,如何确保以下for循环值列表至少打印
val list1 = List(1,2,3) //> list1 : List[Int] = List(1, 2, 3)
val list2 = List() //> list2 : List[Nothing] = List()
for( counti <- list1 ; countj <- list2 ) yield println (counti + " - " + countj)
//> res7: List[Unit] = List()
Run Code Online (Sandbox Code Playgroud)
我期待着类似的东西
1 - BLANK
2 - BLANK
3 - BLANK
Run Code Online (Sandbox Code Playgroud)
但上面的循环给我空白结果列表()
我是scala的新手,所以不确定如何处理这个问题?基本上我试图为报价流找到移动平均线交叉.我不知道如何获得以前的值来将它们与当前值进行比较?
if ( fastMovingAverage(n-1) > slowMovingAverage(n-1) && fastMovingAverage(n) < slowMovingAverage(n) )
then do some action
package com.example.csv
import scala.io.Source
object FileParser {
val TIMESTAMP_LOCATION = 3
val BID_LOCATION = 4
val OFFER_LOCATION = 5
val FAST_WINDOW_SIZE = 5
val SLOW_WINDOW_SIZE = 10
def main(args: Array[String]) = {
val records = Source.fromFile("Sample.csv")
.getLines()
.drop(1)
.map(_.split(","))
.takeWhile( _ != null)
.sliding(SLOW_WINDOW_SIZE , 1)
.foreach(x => movingAverage(x))
}
def movingAverage(numbers: Seq[Array[String]]) = {
val listOfBids = numbers.map(x => x(BID_LOCATION).toDouble)
val slowAverage = listOfBids.reduceLeft(_ …Run Code Online (Sandbox Code Playgroud)