• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Porównanie elementów w tablicach

42 Warsaw Coding Academy
+2 głosów
2,175 wizyt
pytanie zadane 19 października 2021 w Python przez magda_19 Gaduła (3,080 p.)

Witam, mam dwie tablice, które trzeba ze sobą porównać i takie same elementy wrzucić do listy. Problem w tym, że mój kod wyrzuca pustą tablicę

def makeComparison():
  a = (2, 3, 4, 6, 7, 8)
  b = (5, 1, 2, 7, 8, 10, 35)
  extraList = []
  for i in range(len(a)):
    if(a[i] == b[i]) is True:
      extraList.extend(i)   
  return extraList 

makeComparison()

 

1
komentarz 19 października 2021 przez adrian17 Mentor (353,220 p.)
Pomijając jakość kodu... jaka jest _dokładnie_ treść zadania? Bo na oko, tutaj żadna para elementów o tym samym indeksie nie jest równa, więc nic i tak by się nie dodało.
2
komentarz 19 października 2021 przez adrian17 Mentor (353,220 p.)

A co do jakości kodu:

a = (2, 3, 4, 6, 7, 8)

To nie lista, to krotka

for i in range(len(a)):

Pewnie da się ładniej, ale zależy jaka w zasadzie jest treść zadania (patrz wyżej)

if(a[i] == b[i]) is True:

Masło maślane; wystarczy `if a[i] == b[i]:`

extraList.extend(i)

extend() rozszerza listę o zawartość innego ciągu; jak chcesz dodać jeden element to używa się append().

1 odpowiedź

+1 głos
odpowiedź 20 października 2021 przez VBService Ekspert (256,600 p.)
wybrane 7 listopada 2021 przez magda_19
 
Najlepsza

Zapis tablicy w python-ie

import array as arr
 
# creating an array with integer type
a = arr.array('i', [2, 3, 4, 6, 7, 8])
b = arr.array('i', [5, 1, 2, 7, 8, 10, 35])

lub

import numpy as np

a = np.array([2, 3, 4, 6, 7, 8])
b = np.array([5, 1, 2, 7, 8, 10, 35])

 

Twój kod porównuje tylko elementy z dwóch tablic o tym samym indeksie (na tej samej pozycji w tablicy)

if(a[i] == b[i])

czyli przy zadanych wartościach

a = (2, 3, 4, 6, 7, 8)
b = (5, 1, 2, 7, 8, 10, 35)

a[0] - 2 == b[0] - 5 => false
a[1] - 3 == b[1] - 1 => false
a[2] - 4 == b[2] - 2 => false  itd.

 

Spróbuj tak  ( on-line )

import array as arr

def makeComparison(a, b):
    compareList = []
    for i in a:
        if i in b:
            compareList.append(i)
            
    return compareList


# creating an array with integer type
a = arr.array('i', [2, 3, 4, 6, 7, 8])
b = arr.array('i', [5, 1, 2, 7, 8, 10, 35])

print(makeComparison(a, b))

 

Podobne pytania

+1 głos
1 odpowiedź 1,484 wizyt
pytanie zadane 13 listopada 2021 w Python przez magda_19 Gaduła (3,080 p.)
+1 głos
1 odpowiedź 2,833 wizyt
0 głosów
0 odpowiedzi 76 wizyt

93,382 zapytań

142,382 odpowiedzi

322,539 komentarzy

62,740 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...