嗨,我正在措辞中如何简化下面的代码:
val leavesValues: ListBuffer[Double] = ListBuffer()
leavesValues.appendAll(
leaves
.collect { case leaf: Leaf => leaf.value.toDouble }
.toList
)
leavesValues
我希望有可能使它成为一体。
答案 0 :(得分:3)
您为什么要以ListBuffer
开头?应该避免使用可变容器,并且在scala中,几乎不需要使用它们,除了一些罕见的极端情况。我建议,您只是假装它们根本不存在,直到您对语言有足够的了解以能够自信地区分出那些罕见的情况。
已经说过,可以使用称为breakOut
的东西在没有中介的情况下完成集合类型之间的转换。这是您的用法:
import scala.collection.breakOut
val leavesValues: ListBuffer[Double] = leaves.collect {
case leaf: Leaf => leaf.value.toDouble
}(breakOut)
答案 1 :(得分:2)
遵循足够简单吗?
<label>
如果val leavesValues: ListBuffer[Double] = ListBuffer(leaves.collect { case leaf: Leaf => leaf.value.toDouble } :_*)
是案例类:
Leaf
答案 2 :(得分:0)
您可以使用titanic_data = pd.read_csv("E:\\Python\\CSV\\train.csv")
titanic_data.drop('Cabin', axis=1, inplace=True)
titanic_data.dropna(inplace=True)
#print(titanic_data.head(10))
new_sex = pd.get_dummies(titanic_data['Sex'],drop_first=True)
new_embarked = pd.get_dummies(titanic_data['Embarked'],drop_first=True)
new_pcl = pd.get_dummies(titanic_data['Pclass'],drop_first=True)
titanic_data = pd.concat([titanic_data,new_sex,new_embarked,new_pcl],axis=1)
titanic_data.drop(['PassengerId','Pclass','Name','Sex','Ticket','Embarked','Age','Fare'],axis=1,inplace=True)
X = titanic_data.drop(['Survived'],axis=1)
y = titanic_data['Survived']
print(X)
print(y)
X_train, y_train, X_test, y_test = train_test_split(X,y,test_size=0.3, random_state=1)
logreg = LogisticRegression()
logreg.fit(X_train,y_train)
通用转换方法(在Scala <2.13中):
raise ValueError("bad input shape {0}".format(shape))
ValueError: bad input shape (214, 7)
使用#browser.get("https://......")
wait = WebDriverWait(browser, 10)
try:
browser.find_element_by_css_selector('button.green-btn').click()
# wait until dialog dissapear
wait.until(EC.invisibility_of_element_located((By.CSS_SELECTOR, 'md-dialog[aria-describedby="dialogContent_0"]')))
# click the dropdown
browser.find_element_by_css_selector('md-input-container').click()
# select the option element
setOptionElement = browser.find_element_by_css_selector('md-option[value="HDB Executive"]')
# need to scrollIntoView if the option in the bottom
# or you get error the element not clickable
browser.execute_script('arguments[0].scrollIntoView();arguments[0].click()', setOptionElement)
except Exception as ex:
print(ex)
类似于to
,就某种意义上说,它使用val leavesValues = leaves.collect {
case leaf: Leaf => leaf.value.toDouble
}.to[ListBuffer]
机器进行转换,除了这里您只能提供目标集合类型(不包含元素类型) )直接转到该方法。遗憾的是,这不适用于地图,因为to
要求一种类型带有一个类型参数(breakOut
,CanBuildFrom
等),而所有to
后代都有两个类型参数({{ 1}},ListBuffer[A]
等)。
在具有新集合库的Scala 2.13中,可以这样编写:
Vector[A]
请注意圆括号而不是括号:在Scala 2.13中,Map
方法接受对集合的同伴对象的引用,而不是集合类型。在Scala 2.13中,集合库具有不同的设计。特别是,这种新方法还允许地图类型:
HashMap[A, B]