2011-11-23 9 views
13

powiedzmy mam dwie listy:pyton wszystkich możliwych par 2 Wykaz elementów, a uzyskanie indeksu tej pary

a = list(1,2,3) 
b = list(4,5,6) 

Więc mogę mieć 9 par tych członków listy:

(1,4) 
(1,5) 
(1,6) 

(2,4) 
(2,5) 
(2,6) 

(3,4) 
(3,5) 
(3,6) 

Teraz, biorąc pod uwagę dwóch członków listy, jak powyżej, mogę znaleźć indeks pary? Podobnie jak (1,4) z góry będzie pierwszą parą.

+0

Ty zwany ' list() 'konstruktor w niewłaściwy sposób. Byłoby prostsze użycie '[1, 2, 3]' zamiast wywoływania 'list()'. –

+0

Witam. Myślałem, że lista() jest taka sama dla list jak print() jest do druku (w python 2.x)? –

+0

To nie działa w ten sposób. ['list()' oczekuje tylko jednego argumentu.] (http://ideone.com/576XG) –

Odpowiedz

23

I aby zakończyć odpowiedź i pobyt w tym przykładzie:

import itertools 

a = [1, 2, 3] 
b = [4, 5, 6] 
c = list(itertools.product(a, b)) 

idx = c.index((1,4)) 

Ale to będzie liczone od zera indeks listy, więc 0 zamiast 1.

+0

hej. Czy to możliwe bez uprzedniego utworzenia listy kombinacji? –

+0

Samo użycie funkcji itertools daje zwykły iterator. Jeśli oczywiście mógłbyś to powtórzyć i poczekać, aż przybędzie żądana krotka, licząc iteracje. Lub możesz po prostu znaleźć indeks pierwszej wartości na pierwszej liście, a indeks drugiej wartości na drugiej liście i po prostu zacząć obliczyć :) –

8

Jednym ze sposobów, aby to zrobić:

  1. Znajdź pierwszy element sparować szukasz w pierwszym liście:

    p = (1, 4) 
    i = a.index(p[0]) 
    
  2. Znajdź drugi element sparować szukasz w drugiej listy:

    j = b.index(p[1]) 
    
  3. obliczyć wskaźnik na liście produktów:

    k = i * len(b) + j 
    
Powiązane problemy