Listeyi Kümeye Dönüştürme
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 21 / 65.
Set'in en pratik uygulamalarından biri, bir List içindeki yinelenen öğeleri kaldırmaktır. Kümeler yinelenenleri otomatik olarak elediğinden, tekrarlanan değerlere sahip bir listeyi kolayca benzersiz öğelerden oluşan bir koleksiyona dönüştürebilirsiniz.
Bir List nesnesini bir Set nesnesine dönüştürmek için, listeyi Set.from() kurucusuna iletmeniz yeterlidir. Bu, orijinal listedeki tüm benzersiz öğeleri içeren yeni bir küme oluşturur.
List<int> numbersWithDuplicates = [1, 2, 2, 3, 3, 3, 4, 5, 5];
Set<int> uniqueNumbers = Set.from(numbersWithDuplicates);
print(uniqueNumbers); // {1, 2, 3, 4, 5}Eğer sonucu bir List olarak geri almanız gerekiyorsa (belki de kodunuzun diğer kısımlarıyla uyumluluğu korumak için), toList() kullanarak seti tekrar bir listeye dönüştürebilirsiniz. Bu size, orijinalinden yalnızca benzersiz öğeleri içeren bir liste verir.
List<int> uniqueList = Set.from(numbersWithDuplicates).toList();
print(uniqueList); // [1, 2, 3, 4, 5]Liste → Küme → Liste şeklindeki bu desen, verileri daha fazla işlem için liste yapısını korurken yinelenenleri kaldırarak temizlemeniz gerektiğinde son derece yaygındır.
Görev
KolayAnket yanıtlarındaki yinelenen girişleri kaldırarak bir veri temizleme sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:
- Anket başlığını temsil eden bir dize (string) girdisi okuyun
- Anket yanıtlarını temsil eden birden fazla dize girdisi okuyun (girdi
"responses_done"ifadesini aldığınızda sona erecektir) - Tüm orijinal yanıtları (yinelenenler dahil) saklamak için bir List oluşturun
- Listeyi bir Set'e dönüştürmek ve yinelenenleri otomatik olarak kaldırmak için
Set.from()kullanın - Set'i tekrar benzersiz yanıtlardan oluşan bir Listeye dönüştürmek için
toList()kullanın - Veri temizleme sonuçlarını aşağıda gösterilen tam formatta yazdırın
Örneğin, anket başlığı "Customer Satisfaction Survey" ve yanıtlar "Excellent", "Good", "Excellent", "Fair", "Good", "Excellent", "Poor" ise programınız şu çıktıyı vermelidir:
Survey: Customer Satisfaction Survey
Original responses: [Excellent, Good, Excellent, Fair, Good, Excellent, Poor]
Total responses collected: 7
Converting to Set to remove duplicates...
Unique responses (Set): {Excellent, Good, Fair, Poor}
Converting back to List...
Cleaned responses: [Excellent, Good, Fair, Poor]
Duplicates removed: 3
Final unique responses: 4
Status: Data cleaning completed successfullyEğer anket başlığı "Product Feedback" ve yanıtlar "Like", "Dislike", "Like", "Like" ise programınız şu çıktıyı vermelidir:
Survey: Product Feedback
Original responses: [Like, Dislike, Like, Like]
Total responses collected: 4
Converting to Set to remove duplicates...
Unique responses (Set): {Like, Dislike}
Converting back to List...
Cleaned responses: [Like, Dislike]
Duplicates removed: 2
Final unique responses: 2
Status: Data cleaning completed successfullyEğer anket başlığı "Event Rating" ve yanıtlar "Amazing", "Okay", "Great" ise programınız şu çıktıyı vermelidir:
Survey: Event Rating
Original responses: [Amazing, Okay, Great]
Total responses collected: 3
Converting to Set to remove duplicates...
Unique responses (Set): {Amazing, Okay, Great}
Converting back to List...
Cleaned responses: [Amazing, Okay, Great]
Duplicates removed: 0
Final unique responses: 3
Status: Data cleaning completed successfullyProgramınız tam List → Set → List modelini göstermelidir. Önce tüm yanıtları bir List içinde saklayın, ardından List'ten bir Set oluşturmak için Set.from() kullanın ve son olarak Set'i tekrar bir List'e dönüştürmek için toList() kullanın. Kaldırılan yinelenenlerin sayısını, orijinal toplam sayıdan nihai benzersiz sayıyı çıkararak hesaplayın.
Kopya kağıdı
Bir List içindeki yinelenenleri kaldırmak için, Set.from() kullanarak onu bir Set'e dönüştürün:
List<int> numbersWithDuplicates = [1, 2, 2, 3, 3, 3, 4, 5, 5];
Set<int> uniqueNumbers = Set.from(numbersWithDuplicates);
print(uniqueNumbers); // {1, 2, 3, 4, 5}Bir Set'i tekrar List'e dönüştürmek için toList() kullanın:
List<int> uniqueList = Set.from(numbersWithDuplicates).toList();
print(uniqueList); // [1, 2, 3, 4, 5]List → Set → List deseni, liste yapısını korurken veri temizleme için yaygın olarak kullanılır.
Kendin dene
import 'dart:io';
void main() {
// Anket başlığını oku
String? surveyTitle = stdin.readLineSync();
// "responses_done" gelene kadar anket yanıtlarını oku
List<String> originalResponses = [];
String? response;
while ((response = stdin.readLineSync()) != "responses_done") {
if (response != null) {
originalResponses.add(response);
}
}
// TODO: Kodunuzu aşağıya yazın
// 1. Listeyi bir Set'e dönüştürmek için Set.from() kullanın (yinelenenleri kaldırır)
// 2. Set'i tekrar bir List'e dönüştürmek için toList() kullanın
// 3. Kaldırılan yinelenenleri ve nihai sayıları hesaplayın
// Sonuçları gerekli formatta yazdırın
print("Survey: $surveyTitle");
print("Original responses: $originalResponses");
// Kalan yazdırma ifadelerini buraya ekleyin
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1İleri Düzey Liste İşlemleri
Liste Özellikleri: first & lastListe Durumu: isEmpty & isNotEmptyBir Listeyi Tersine ÇevirmeListeye Ekleme: insertListeden Silme: removeWhereListede Bulma: indexOfBir Listeyi SıralamaBir Listeyi KarıştırmaÖzet - Liste Düzenleyici4İleri Seviye Map İşlemleri
Map Üzerinde GezinmeAnahtar ve Değer KontrolüMap Özellikleri: keys & valuesKoşullu Ekleme: putIfAbsentMap'ten Öge Kaldırmaİç İçe Map'lerÖzet - Envanter Güncelleme7İleri Seviye Fonksiyonlar
Anonim FonksiyonlarFonksiyonları Argüman Olarak AktarmaClosure'ları AnlamakÖzyinelemeye GirişÖzyinelemeli Fonksiyon: Geri SayımÖzyinelemeli Fonksiyon: FaktöriyelÖzet - Liste İşleyici10Son Meydan Okumalar
Meydan Okuma: Not SıralayıcıMeydan Okuma: Sesli Harf SayacıMeydan Okuma: FizzBuzz2Fonksiyonel Liste İşlemleri
'map' ile Dönüştürme'where' ile Filtreleme'.toList()' Kullanımı'any' ile Koşul Kontrolü'every' ile Koşullar'firstWhere' ile BulmaÖzet - Veri Filtreleme5Proje: Alışveriş Sepeti Hesaplayıcı
Proje KurulumuSepete Ürün Ekleme3Kümeler
Küme Nedir?Küme OluşturmaKümelere Eleman Ekleme ve ÇıkarmaKüme İçinde Eleman KontrolüListeyi Kümeye DönüştürmeKüme BirleşimiKüme KesişimiKüme FarkıÖzet - Benzersiz Davetli Listesi