Tôi cố gắng để zip
nhiều chuỗi để tạo thành một tuple dài:Zip nhiều chuỗi
val ints = List(1,2,3)
val chars = List('a', 'b', 'c')
val strings = List("Alpha", "Beta", "Gamma")
val bools = List(true, false, false)
ints zip chars zip strings zip bools
Những gì tôi nhận được:
List[(((Int, Char), String), Boolean)] =
List((((1,a),Alpha),true), (((2,b),Beta),false), (((3,c),Gamma),false))
Tuy nhiên tôi muốn có được một chuỗi các phẳng tuples :
List[(Int, Char, String, Boolean)] =
List((1,a,Alpha,true), (2,b,Beta,false), (3,c,Gamma,false))
tôi bây giờ tôi có thể làm:
List(ints, chars, strings, bools).transpose
Nhưng nó trả về yếu được nhập List[List[Any]]
. Ngoài ra tôi có thể làm (ints, chars, strings).zipped
, nhưng zipped
chỉ hoạt động trên 2 bộ và 3 bộ.
Có cách nào để nén (tùy ý) số chuỗi có độ dài bằng nhau một cách dễ dàng không?
+1, cảm ơn. Tôi hiện đang sử dụng cách tiếp cận 'bản đồ', nhưng' t._1._1, t._1._2, t._2, t._3' không dễ đọc - và trong trường hợp của tôi, tôi cần một bộ 5-bit, làm cho vấn đề còn tồi tệ hơn. Tôi không thực sự cần hỗ trợ danh sách dài tùy ý, nhưng * đủ dài *. Mặc dù tôi có thể có một số phương pháp chuyên biệt trả về các bộ dữ liệu có độ chính xác cao, nhưng tôi nhận được điểm của bạn về vấn đề 'Tuple1'-' Tuple22'. –
Với đối sánh mẫu, bạn có thể loại bỏ cú pháp '._1, ._2' vv không đọc được:' def f2 [A, B, C] (t: ((A, B), C)) = t khớp {case ((a, b), c) => (a, b, c)} ' – Jesper