Bir listede eşit değerler bulma

Sep 17 2020

Bir listeden eşit unsurları ve konumlarını çıkarmanın bir yolu var mı ???

Bir örnek olabilir

v = {13.51, 13.51, 12.36, 12.36, 12.36, 12.36, 12.85, 12.85, 12.85, 12.85}

istenen çıktı ile aşağıdaki gibi bir liste çıktı:

 {{13.51, 12.36, 12.85},{2,4,4}}

solda doğru sırayla yazılmış öğeler ve sağda kaç kez tekrarladıkları var. Başlangıç ​​listesindeki öğeler sıralı olarak kabul edilir. Teşekkürler

Yanıtlar

2 Bill Sep 17 2020 at 09:26

Deneyin

v = {13.51, 13.51, 12.36, 12.36, 12.36, 12.36, 12.85, 12.85, 12.85, 12.85};
Transpose[Tally[v]]

hangi döner

{{13.51, 12.36, 12.85}, {2, 4, 4}}

ve bunun sizin için her durumda işe yarayıp yaramadığını görün. Yaklaşık ondalık sayılar bazen eşitlik için test edilirken sorunlara neden olabilir.

UlrichNeumann Sep 17 2020 at 09:54

Deneyin Union

{13.51, 13.51, 12.36, 12.36, 12.36, 12.36, 12.85, 12.85, 12.85, 12.85} // Union
(*{12.36, 12.85, 13.51}*)

{1, 3, 3, 3, 4, 4, 4} //Union
(*{1, 3, 4}*)