Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

Nếu tôi hiểu chính xác câu hỏi của bạn, nó không chỉ phải tìm kiếm một giá trị trùng lặp duy nhất, mà bất kỳ loạt giá trị nào. tức là với [1,2,3,4], nó sẽ tìm thấy một bản sao của [2,3,4] trong [39,87,2,3,4].

Nhập khẩu và giá trị kiểm tra

import itertools,pprint
from collections import defaultdict
l = ((1, 2, 3, 4, 5),
 (6, 7, 8, 9, 10),
 (11, 12, 13, 14, 15),
 (16, 17, 18, 19, 20),
 (21, 22, 23, 24, 25),
 (26, 8, 9, 29, 30),
 (31, 13, 14, 15, 35),
 (17, 18, 19, 39, 40),
 (41, 23, 24, 44, 45),
 (46, 47, 48, 49, 50))

Mã chính:

seen = defaultdict(dict)
for y,row in enumerate(l):
        rowlen = len(row)
        values = [ [ (row[i:k+1]) for (i,k) in zip(range(rowlen),range(e,rowlen,1))] for e in range(rowlen) ]
        for valueGroup in values:
            for x,value in enumerate(valueGroup):
                seen[value]['count'] = seen[value].get('count',0) + 1
                seen[value]['x-coOrd'] = x
                seen[("R",y)][value] = True

for y in range(len(l)):
    my_rows_vals = seen[("R",y)].keys()
    for value in my_rows_vals:
        if seen[value]['count'] > 1:
            print "{0} repeated at ({1},{2})".format(value,seen[value]['x-coOrd'],y)

Sẽ đầu ra, như một mẫu (có nhiều đầu ra hơn):

(13, 14) repeated at (1,6)
(14, 15) repeated at (2,6)
(13,) repeated at (1,6)
(13, 14, 15) repeated at (1,6)
(14,) repeated at (2,6)
(17, 18) repeated at (0,7)
(18, 19) repeated at (1,7)
(17,) repeated at (0,7)
(18,) repeated at (1,7)
(19,) repeated at (2,7)
(17, 18, 19) repeated at (0,7)
(23,) repeated at (1,8)
(24,) repeated at (2,8)
(23, 24) repeated at (1,8)

Logic hiểu biết danh sách đã được lý luận dựa trên ví dụ này

 l = [1,2,3,4]
 len = 4
 i:k
 0:1 1:2 2:3 3:4  i = 0,1,2,len-e  k = e,e+1,e+2,e+3    e = 0
 0:2 1:3 2:4      i = 0,1,len-e    k = e,e+1,e+2        e = 1
 0:3 1:4          i = 0,len-e      k = e,e+1            e = 2
 0:4              i = len-e        k = e                e = 3

Phương pháp này khác với các câu trả lời khác, vì nó kiểm tra cả cá nhân và chuỗi số và làm nổi bật cả hai bên liên quan đến trận đấu.

Hii! Tôi thích đặt câu hỏi ở đây vì tôi luôn học hỏi rất nhiều từ tất cả các bạn. Vì vậy, đây là tôi bận tâm với một câu hỏi khác đã làm phiền tôi trong một số ngày. Tôi đang cố gắng viết một hàm trả về đúng nếu các số từ 1 đến 9 xuất hiện chính xác một lần trong mảng của tôi và nếu không nhưng tôi bối rối về lý do tại sao mã của tôi không hoạt động theo cách mà nó được cho là nó Tuyên bố trả lại tùy thuộc vào việc tìm thấy hay không. Làm thế nào tôi sẽ làm điều này? Tôi được cho biết đây là một vấn đề dễ dàng, nhưng tôi không thể giải quyết nó. Mã: https://code.sololearn.com/c5thyz5b2q71

Annei, tôi thấy. Chà, không phải là tôi đã sử dụng thư viện của bên thứ ba, mà chỉ những gì ngôn ngữ được trang bị với :) Nhưng, tôi chắc chắn bạn có lý do của bạn. Ngoài ra, người ta có thể tránh xa mảng và sử dụng một chút mặt nạ. Đó là cùng một ý tưởng, chỉ có chúng tôi lật một chút vào các số vị trí [hàng] [cột] bật và xem cuối cùng chúng ta có một mẫu bit nhất định. Const Int Mask = 0b1111111110; Đây là mẫu mong muốn của chín bit được đặt tại các vị trí 1 đến 9. Hãy thu thập các bit từ mảng: int bit = 0; for (int row ...) cho (int col ...) bit | = (1

Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

Lets think of the "dumbest" solution: bool seen1 = false, seen2 = false, ... for(...) { for(...) { int current = numbers[row][column]; if (current == 1) seen1 = true; if (current == 2) seen2 = true; ... } } return seen1 && seen2 && seen3 && ...; This works because if you've seen 9 different numbers, you know they each occurred just once--there's only space for 9 elements in your array after all. (the "pigeonhole principle".) How do you tidy this up? Well, you could use an std::map, or an array of size 9, that stores how often you've seen each of the numbers. int counting_array[9] {0}; for(...) for(...) { int current = numbers[row][column] - 1; // -1, to turn the 1-9 range into 0-8. if (current < 0 || current > 8) return false; counting_array[current]++; } } And then you check whether counting_array contains a 1 everywhere. But this is just Ani Jona 🕊 's solution so there you go. :)

Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

Hàm của bạn make_array trả về 0. Do đó, trong khi (make_array ()) đánh giá là sai và phần tiếp theo cho các vòng lặp không bao giờ được thực thi. Tôi không chắc tại sao cuộc gọi đến make_array lại ở vị trí một thời gian và ý tưởng để xác minh: (bị xóa vì bị lỗi)

Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

Không, xin lỗi, đó là một sai lầm. Hai lựa chọn xuất hiện trong tâm trí. Đầu tiên, nếu yêu cầu tất cả các số xuất hiện một lần, thì bạn có thể đảm bảo điều đó tại thời điểm bạn tạo mảng. Chỉ cần tạo một mảng có số 1 đến 9 và sử dụng chức năng Shuffle để tạo hoán vị và sau đó sử dụng nó để lấp đầy mảng 2D. Nếu không cần thiết tất cả các số xuất hiện và nó chỉ là vì tò mò, thì bạn có thể đảo ngược ý tưởng. Tạo một mảng 1D có kích thước 9, init đến 0 và sử dụng các số trong mảng 2D làm chỉ mục (+ 1). Đặt mục nhập mảng tương ứng thành 1 và kiểm tra xem tất cả có phải là một trong cuối cùng không.

Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

Giống như thế này: #include bool xuất hiện_once () {int mảng [9] {0}; for (int copy_row = 0; copy_row <3; copy_row ++) {for (int copy_column = 0; copy_column <3; copy_column ++) {mảng [số [copy_row] [copy_column] - 1] = 1; }} return all_of (cbegin (mảng), cend (mảng), [] (int n) {return n == 1;}); }

Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

.

Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

Đây là ý tưởng đầu tiên tôi có nhưng cuối cùng đã rút lại vì nó là sai. Các yếu tố trong mảng không phải là duy nhất. Mặc dù đúng là nếu các số không thêm tới 45 phần tử không phải là duy nhất. Converse, tuy nhiên, là sai. Ví dụ. {{2,2,3}, {4,5,6}, {7,8,8}} cũng tổng hợp lên đến 45, cũng như nhiều kết hợp khác.

Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

Wow cảm ơn bạn đã trả lời! Tôi đã thay đổi hàm mảng tạo thành khoảng trống, nhưng muốn sử dụng mảng trong chức năng đó trong bool nhưng không biết cách sử dụng nó nên tôi đã sử dụng trong khi tôi tự nhầm lẫn - nhưng tôi cũng không nhận được phần cuối cùng . Tôi muốn biết liệu chúng có xuất hiện nhiều hơn một lần không .. Xác minh này có giúp được gì không?

Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

Cảm ơn bạn!! Mặc dù vậy, tôi đã giải quyết nó đã ❤

Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

OK, nhưng làm cách nào để sử dụng Nunbers trong mảng 2D trong mảng mới này?

Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

Cảm ơn Tout !! Nhưng tôi đang cố gắng không sử dụng bất kỳ thư viện bổ sung nào ..

Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

Đối với một mảng 3x3, tổng của tất cả các thành viên của nó, nếu họ là duy nhất và không bao gồm 0, sẽ bằng 45. Bạn có thể trừ đi từ 45 tổng của tất cả các thành viên mảng và nếu chúng không duy nhất, kết quả sẽ Không bằng 0. https://code.sololearn.com/cizummtfiiwt/?ref=app Mã Java chẳng hạn.

Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

Alex bạn đang nghĩ về vấn đề mà bạn có một danh sách các số nhưng một số bị thiếu và bạn phải tìm ra đó là cái nào. Nhưng điều đó không hoạt động ở đây.

Hướng dẫn find duplicate elements in 2d array in python - tìm các phần tử trùng lặp trong mảng 2d trong python

Làm thế nào để bạn tìm thấy các bản sao trong một mảng 2D?

Đây là một cách thức các bản sao thẳng tiến. Biến mảng 2D thành mảng 1D (danh sách), sau đó lặp qua mảng 1D đếm các bản sao khi bạn tìm thấy chúng và loại bỏ chúng để bạn không đếm chúng nhiều hơn một lần.Turn the 2d array into a 1d array ( List ), then loop through the 1d array counting the duplicates as you find them and removing them so you don't count them more than once.

Làm thế nào để bạn tìm thấy các yếu tố trùng lặp trong một python mảng?

ALGORITHM:..
Bước 1: Khai báo và khởi tạo một mảng ..
Bước 2: Có thể tìm thấy các phần tử trùng lặp bằng hai vòng.Vòng ngoài sẽ lặp qua mảng từ 0 đến chiều dài của mảng.....
Bước 3: Nếu tìm thấy một trận đấu có nghĩa là phần tử trùng lặp được tìm thấy sau đó, hãy hiển thị phần tử ..

Làm thế nào để tôi tìm thấy một yếu tố lặp lại trong Python?

Nhiều cách để kiểm tra xem các bản sao có tồn tại trong danh sách Python không..
Độ dài của danh sách & chiều dài của bộ khác nhau ..
Kiểm tra từng phần tử trong tập.Nếu có, DUP, nếu không, hãy nối thêm ..
Kiểm tra danh sách.Count () cho mỗi yếu tố ..

Làm thế nào để bạn loại bỏ các bản sao khỏi danh sách 2D trong Python?

Hãy thảo luận về những cách nhất định mà nhiệm vụ này có thể đạt được ...
Phương thức số 1: Sử dụng Sắp xếp () + Set ().
Phương thức số 2: Sử dụng Set () + Map () + Sắp xếp ().
Phương thức số 3: Sử dụng phương thức Sắp xếp (), không phải trong toán tử ..