Làm cách nào để nhận được giá trị không lặp lại trong danh sách python?

Sử dụng NumPy, bạn phải nhập mô-đun NumPy. Nhưng đây là một giải pháp khác, chỉ đếm số lần lặp lại của mọi phần tử trong danh sách

nhập numpy dưới dạng số np = [1, 2, 3, 4, 2, 3, 5] đếm = np. bincount[số] np. trong đó [[đếm > 1]][1] in [đếm]

đầu ra. [0 1 2 2 1 1]

Hãy bình luận nếu bạn có bất kỳ câu hỏi hoặc đề xuất nào về hướng dẫn danh sách Python này

Ghi chú. IDE. PyCharm2021. 3 [Phiên bản cộng đồng]

cửa sổ 10

Trăn 3. 10. 1

Tất cả các ví dụ về Python đều có trong Python3, vì vậy có thể nó khác với python 2 hoặc các phiên bản nâng cấp

Bằng cấp về Khoa học Máy tính và Kỹ sư. Nhà phát triển ứng dụng và có kinh nghiệm về nhiều ngôn ngữ lập trình. Đam mê công nghệ & thích học hỏi kỹ thuật

Chia sẻ cái này

  • Facebook
  • WhatsApp
  • LinkedIn
  • Hơn

  • Twitter
  • In
  • reddit
  • Tumblr
  • Pinterest
  • Túi
  • điện tín
  • Ứng dụng trò chuyện
  • E-mail

Có liên quan

Phần tử không lặp lại

Tìm phần tử không lặp lại đầu tiên trong một mảng các số nguyên đã cho

ví dụ

Đầu vào. -1 2 -1 3 2 Đầu ra. 3 Giải thích. Số đầu tiên không lặp lại là. 3 đầu vào. 9 4 9 6 7 4 Đầu ra. 6

Cách tìm các bản sao từ danh sách trong Python

Kiểm tra xem một danh sách có các Phần tử trùng lặp hay không bằng cách sử dụng Bộ

Chúng tôi biết rằng các bộ trong Python chỉ chứa các phần tử duy nhất. Chúng ta có thể sử dụng thuộc tính này của tập hợp để kiểm tra xem danh sách có phần tử trùng lặp hay không

Đối với điều này, chúng tôi sẽ tạo một tập hợp từ các phần tử của danh sách. Sau đó, chúng tôi sẽ kiểm tra kích thước của danh sách và tập hợp. Nếu kích thước của cả hai đối tượng bằng nhau, nó sẽ xác nhận rằng danh sách không có phần tử trùng lặp. Nếu kích thước của tập hợp lớn hơn danh sách, điều đó có nghĩa là danh sách chứa các phần tử trùng lặp. Chúng ta có thể hiểu điều này từ ví dụ sau

chắc chắn check_duplicate[l]. mySet = set[l] if len[mySet] == len[l]. print["Danh sách không có phần tử trùng lặp. "] khác. print["Danh sách chứa các phần tử trùng lặp"] list1 = [1, 2, 3, 4, 5, 6, 7] print["Danh sách 1 là. ", list1] check_duplicate[list1] list2 = [1, 2, 1, 2, 4, 6, 7] print["List2 la. ", list2] check_duplicate[list2]

đầu ra

Danh sách1 là. [1, 2, 3, 4, 5, 6, 7] Danh sách không có phần tử trùng lặp. Danh sách2 là. [1, 2, 1, 2, 4, 6, 7] Danh sách chứa các phần tử trùng lặp

Theo cách tiếp cận trên, chúng ta cần tạo một tập hợp từ tất cả các phần tử của danh sách. Sau đó, chúng tôi cũng kiểm tra kích thước của tập hợp và danh sách. Các hoạt động này rất tốn kém

Thay vì sử dụng phương pháp này, chúng ta chỉ có thể tìm kiếm phần tử trùng lặp đầu tiên. Để làm điều này, chúng tôi sẽ bắt đầu từ phần tử đầu tiên của danh sách và sẽ tiếp tục thêm chúng vào tập hợp. Trước khi thêm các phần tử vào tập hợp, chúng ta sẽ kiểm tra xem phần tử đó đã có trong tập hợp hay chưa. Nếu có, danh sách chứa các phần tử trùng lặp. Nếu chúng ta có thể thêm từng phần tử của danh sách vào tập hợp, thì danh sách không chứa bất kỳ phần tử trùng lặp nào. Điều này có thể được hiểu từ ví dụ sau

Tạo từ điển, sử dụng các mục Danh sách làm khóa. Điều này sẽ tự động loại bỏ mọi trùng lặp vì từ điển không thể có khóa trùng lặp

Tạo từ điển

mylist = ["a", "b", "a", "c", "c"]
mylist = list[dict. fromkeys[mylist]]
print[mylist]

Sau đó, chuyển từ điển trở lại thành danh sách

Chuyển đổi thành một danh sách

mylist = ["a", "b", "a", "c", "c"]
mylist = list[dict. fromkeys[mylist]]
print[mylist]

Bây giờ chúng tôi có một Danh sách không có bất kỳ bản sao nào và nó có cùng thứ tự với Danh sách ban đầu

In Danh sách để chứng minh kết quả

In danh sách

mylist = ["a", "b", "a", "c", "c"]
mylist = list[dict. fromkeys[mylist]]
print[mylist]

Tạo một chức năng

Nếu bạn muốn có một chức năng mà bạn có thể gửi các danh sách của mình và nhận lại chúng mà không bị trùng lặp, bạn có thể tạo một chức năng và chèn mã từ ví dụ trên

Cho một mảng các số nguyên kích thước N, nhiệm vụ là tìm phần tử không lặp lại đầu tiên trong mảng này.  

ví dụ

Đầu vào. {-1, 2, -1, 3, 0}
Đầu ra. 2
Giải thích. Số đầu tiên không lặp lại là. 2

Đầu vào. {9, 4, 9, 6, 7, 4}
Đầu ra. 6

Đề nghị thực hành

Phần tử không lặp lại

Thử nó

Tìm phần tử không lặp lại đầu tiên trong một Mảng số nguyên đã cho bằng cách sử dụng Vòng lặp lồng nhau

Cách tiếp cận này dựa trên ý tưởng sau

Giải pháp đơn giản là sử dụng hai vòng. Vòng lặp bên ngoài chọn từng phần tử một và vòng lặp bên trong kiểm tra xem phần tử có xuất hiện nhiều lần hay không

Hình minh họa

Cho arr[] = {-1, 2, -1, 3, 0}

Đối với phần tử tại i = 0.  

  • Giá trị của phần tử tại chỉ số 2 là như nhau thì đây không thể là phần tử không lặp đầu tiên

Đối với phần tử tại i = 1

  • Sau khi duyệt qua mảng arr[1] không có mặt không có trong mảng ngoại trừ lúc 1

Do đó, phần tử có chỉ số 1 là phần tử không lặp lại đầu tiên là 2

Thực hiện theo các bước dưới đây để giải quyết vấn đề đã cho.  

  • Lặp lại mảng từ bên trái
  • Kiểm tra từng phần tử nếu sự hiện diện của nó trong mảng nhiều hơn 1 lần
  • Sử dụng một vòng lặp lồng nhau để kiểm tra sự hiện diện

Dưới đây là triển khai ý tưởng trên

C++




6
58

6
59

6
60

6
61
6
62
6
63

 

6
64
6
65
6
64
6
1
6
64
6
3

6
4

6
5
6
6

6
5
6
8
6
9
6
64
6
581

________ 2582 ________ 264 ________ 2584

6
582
6
586

6
582
6
8
6
589

6
590
6
591
6
592

________ 2593 ________ 2594 ________ 2595

6
582
6
597

6
582
6
599

6
582
6
591
6
602

________ 2590 ________ 2604 ________ 2605

6
5
6
607

6
5
6
604
6
610

6
607

 

6
612

6
64
6
614

6
4

6
5
6
64
6
618

6
5
6
64
6
621____2622
6
623
6
622
6
625

6
5
6
627

6
5
6
604
6
630

6
607

Java




6
632

6
633

6
634
6
635

 

6
5
6
637
6
64
6
65
6
64
6
1
6
64
6
3

6
5
6
4

6
582
6
6

6
582
6
8
6
9____264
6
652
6
653
6
654

6
590
6
64
6
584

6
590
6
586

6
590
6
8
6
02____2653
6
04

________ 2593 ________ 2591 ________ 2592

6
08
6
594
6
595

6
590
6
597

6
590
6
599

6
590
6
591
6
602

________ 2593 ________ 2604 ________ 2605

6
582
6
607

 

6
582
6
604
6
25
6
26
6
595

6
5
6
607

 

6
5
6
612

6
5
6
33
6
637
6
35
6
36

6
5
6
4

 

6
582
6
64
6
41
6
42
6
43
6
44
6
43
6
42
6
43
6
48
6
43
6
50
6
43
6
44
6
53

6
582
6
64
6
56

 

6
582
6
58

6
5
6
607

6
607

 

6
62

Python3




6
63

6
64

 

 

6
65
6
66

 

6
5
6
68

6
5
6
8
6
71____072
6
73
6
74

6
582
6
76
6
77
6
653

6
582
6
80

________ 2582 ________ 082 ________ 083

6
590
6
591
6
86
6
77
6
76
6
89
6
90
6
77
6
77
6
93

6
593
6
594

6
590
6
76
6
98
6
77
6
26

6
582
6
5802

6
582
6
5804

6
582
6
591
6
5807
6
77
6
77
6
5810

6
590
6
604
6
90

 

________ 05 ________ 2604 ________ 025 ________ 026

 

 

6
5818

6
5819
6
77
6
5821
6
42
6
43
6
44
6
43
6
42
6
43
6
48
6
43
6
50
6
43
6
44
6
5833

6
5834
6
77
6
5836
6
5837

6
5838
6
5839

 

6
5840

C#




6
5841

6
59

6
61
6
5844

 

6
634
6
635

6
5
6
637
6
64
6
65
6
64
6
5852
6
64
6
3

6
5
6
4

6
582
6
6

6
582
6
8
6
9____264
6
581

6
590
6
64
6
584

6
590
6
586

6
590
6
8
6
589

________ 2593 ________ 2591 ________ 2592

6
08
6
594
6
595

6
590
6
597

6
590
6
599

6
590
6
591
6
602

________ 2593 ________ 2604 ________ 2605

6
582
6
607

6
582
6
604
6
610

6
5
6
607

 

6
5
6
612

________ 05 ________ 033 ________ 2637 ________ 035 ________ 25901

6
5
6
4

6
582
6
64____25906

6
582
6
64
6
5909

6
582
6
5911

6
5
6
607

6
607

6
62

PHP




6
5916

6
5917

6
59

 

6
5919
6
65____25921____043
6
5923
6
5924

6
4

6
5
6
6

6
5
6
8
6
9_______25931
6
5932
6
5931
6
5934
6
5923
6
595
6
5931
6
5938

6
5
6
4

6
582
6
5942
6
595

6
582
6
586

6
582
6
8
6
9
6
5942
6
5932
6
5942
6
5934
6
5923
6
595
6
5942
6
5938

6
590
6
591
6
9
6
5931
6
5961
6
5942
6
5963
6
5921
6
5821
6
5931
6
5967
6
5921
6
5821
6
5942
6
5971

________ 2593 ________ 2594 ________ 2595

6
5975
6
597

6
582
6
599

6
582
6
591
6
9
6
5942
6
5983
6
5923
6
5924

6
590
6
604
6
5921
6
5821
6
5931____25991

6
5
6
607

6
5
6
604
6
610

6
607

 

6
5
6
612

6
5
6
5921
6
77____26003
6
6004

6
5
6
5923
6
6007
6
5921
6
6009

6
5
6
6011
6
65
6
5921
6
43
6
5923
6
6016

6
5

6
6018

6
6019

JavaScript




6
6020

6
582
6
6022

6
582
6
5919
6
6025

6
590
6
6

6
590
6
8
6
6030

6
593____26032

6
593
6
586

6
593
6
8
6
589

6
08
6
591
6
592

6
6041____2594
6
595

6
593____2597

6
593____26047

6
593
6
591
6
602

________ 008 ________ 2604 ________ 2605

6
590
6
607

6
590
6
604
6
610

6
582
6
607

 

6
582
6
612

 

6
582
6
6064

6
582
6
6066

6
582____26068

 

 

 

6
6069
6
6070

6
5____26072

Đầu ra

6

Độ phức tạp về thời gian. O[n*n], Kiểm tra từng phần tử n lần
Không gian phụ. Ô[1]

Tìm phần tử không lặp lại đầu tiên trong một Mảng số nguyên nhất định bằng Hashing

Cách tiếp cận này dựa trên ý tưởng sau

  • Ý tưởng là lưu trữ tần suất của mọi phần tử trong hashmap
  • Sau đó kiểm tra phần tử đầu tiên có tần số là 1 trong hashmap
  • Điều này có thể đạt được bằng cách sử dụng băm

Hình minh họa

mảng[] = {-1, 2, -1, 3, 0}

Bản đồ tần số cho arr

  • -1 -> 2
  • 2 -> 1
  • 3 -> 1
  • 0 -> 1

Di chuyển mảng[] từ trái sang

Tại i = 0

  • Tần suất của mảng[0] là 2 nên không thể là phần tử không lặp đầu tiên

Tại i = 1

  • Tần suất của arr[1] là 1 nên nó sẽ là phần tử không lặp lại đầu tiên

Do đó, 2 là phần tử không lặp lại đầu tiên

Thực hiện theo các bước dưới đây để giải quyết vấn đề đã cho.  

  • Di chuyển mảng và chèn các phần tử và số lượng của chúng trong bảng băm
  • Duyệt lại mảng và in phần tử đầu tiên có số đếm bằng 1

Dưới đây là triển khai ý tưởng trên

C++




6
6073

6
59

6
60

6
61
6
62
6
63

 

6
64
6
65
6
64
6
1
6
64
6
3

6
4

6
5
6
6087

6
5____26089

6
5
6
6091____264____043
6
64
6
6095

6
5
6
8
6
9____264
6
6100

6
582
6
6102

 

6
5
6
6104

6
5
6
6106

6
5
6
8
6
9____264
6
6100

6
582
6
591
6
6114

________ 2590 ________ 2604 ________ 2605

6
5
6
604
6
610

6
607

 

6
612

6
64
6
614

6
4

6
5
6
64
6
618

6
5
6
64
6
621____2622
6
623
6
622
6
625

6
5
6
627

6
5
6
604
6
630

6
607

Java




6
6142

6
59

6
6144
6
6145

 

6
634
6
635

 

6
5
6
637
6
64
6
65
6
64
6
1
6
64
6
3

6
5
6
4

6
582
6
6087

6
582____26089

 

6
582
6
6163
6
6164
6
6165

6
582
6
8
6
9____264
6
652
6
653
6
654

6
590
6
591
6
6175

6
593
6
6177____026
6
6016

6
590
6
607

6
590
6
6183
6
4

6
593
6
6186
6
26
6
6016

6
590
6
607

6
582
6
607

6
582
6
6104

6
582
6
6106

6
582
6
8
6
9
6
64
6
652
6
653
6
6203

6
590
6
591
6
6206
6
26
6
5924

________ 2593 ________ 2604 ________ 2605

6
582
6
604
6
25
6
26
6
595

6
5
6
607

 

6
5
6
612

6
5
6
33
6
637
6
35
6
36

6
5
6
4

6
582
6
64
6
41
6
42
6
43
6
44
6
43
6
42
6
43
6
48
6
43
6
50
6
43
6
44
6
53

6
582
6
64
6
56

6
582
6
6247

6
5
6
607

6
607

 

6
6251

Python3




6
6252

6
64

________ 26254 ________ 26255 ________ 26144 ________ 26257

 

 

6
65
6
66

6
5
6
6261
6
77
6
6263
6
6264
6
6265
6
653
6
5924

 

6
5____26269

6
5
6
8
6
71____072
6
73
6
74

6
582
6
6277
6
98
6
77
6
26

 

6
5____26282

6
5____26284

6
5
6
8
6
71____072
6
73
6
74

6
582
6
591
6
6277
6
77
6
77
6
26____26265

6
590
6
604
6
90

________ 05 ________ 2604 ________ 025 ________ 026

 

 

6
6305

6
5819
6
77
6
5821
6
42
6
43
6
44
6
43
6
42
6
43
6
48
6
43
6
50
6
43
6
44
6
5833

6
5834
6
77
6
5836
6
5837

6
5838
6
5839

 

6
6327

C#




6
6328

6
59

6
61
6
5844

6
61
6
6333

 

6
634
6
635

 

6
5
6
637
6
64
6
65
6
64
6
5852
6
64
6
3

6
5
6
4

6
582
6
6087

6
582____26089

 

6
582
6
6351____264
6
43
6
64
6
6355
6
6164
6
6351
6
64
6
43
6
64
6
6361

Chủ Đề