我认为两者是相同的.
nums = [1, 2, 0]
nums[nums[0]], nums[0] = nums[0], nums[nums[0]]
print nums # [2, 1, 0]
nums = [1, 2, 0]
nums[0], nums[nums[0]] = nums[nums[0]], nums[0]
print nums # [2, 2, 1]
Run Code Online (Sandbox Code Playgroud)
但结果却不同.
为什么结果不同?(为什么会产生第二个?)
我有一个元组
val tuple = ("Mike", 40)
Run Code Online (Sandbox Code Playgroud)
和一个案例类
case class Person(name: String, age: Int)
Run Code Online (Sandbox Code Playgroud)
如何将我的元组打包到Person类的对象?除此之外有什么方法:
new Person(tuple._1, tuple._2)
Run Code Online (Sandbox Code Playgroud)
也许有人喜欢
tuple.asInstanceOf[Person]
Run Code Online (Sandbox Code Playgroud)
谢谢.
这是我项目中类型安全的麻烦违规,所以我正在寻找一种方法来禁用它.似乎如果函数采用AnyRef(或java.lang.Object),您可以使用任何参数组合调用该函数,Scala会将参数合并到Tuple对象中并调用该函数.
在我的情况下,该函数不期望一个元组,并在运行时失败.我希望在编译时捕获这种情况.
object WhyTuple {
def main(args: Array[String]): Unit = {
fooIt("foo", "bar")
}
def fooIt(o: AnyRef) {
println(o.toString)
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
(foo,bar)
Run Code Online (Sandbox Code Playgroud) 我有一个列表列表(使用简单的列表推导生成):
>>> base_lists = [[a, b] for a in range(1, 3) for b in range(1, 6)]
>>> base_lists
[[1,1],[1,2],[1,3],[1,4],[1,5],[2,1],[2,2],[2,3],[2,4],[2,5]]
Run Code Online (Sandbox Code Playgroud)
我想将整个列表转换为包含列表中所有值的元组,即:
resulting_tuple = (1,1,1,2,1,3,1,4,1,5,2,1,2,2,2,3,2,4,2,5)
Run Code Online (Sandbox Code Playgroud)
最有效的方法是什么?(使用列表理解生成这个相同元组的方法也是可以接受的答案.)我在这里和Python文档中查看了答案,但是我找不到合适的答案.
编辑:
非常感谢所有回答的人!