Sida 1 av 1
Python jämföra värden i tuppel
Postat: 21 jun 2007, 14:15
av Chippen
Jag undrar om det finns någon smidig funktion för att jämför värden i en tuppel. Alltså säg att jag har en tuppel med 5 värden, då vill jag i första hand kunna ta reda på om alla 5 värden är lika eller om dem är olika.
vill inte behöva skriva:
för det blir lite fult och jobbigt.

SV: Python jämföra värden i tuppel
Postat: 21 jun 2007, 14:20
av Okänd
Du skulle ju alltid kunna skriva en funktion som jämnför dom åt dig.
Funktionen returnerar då Sant om alla stämmer annars Falskt.
Om Python stödjer operator överlagring så kan du lösa det på det sättet.
Men jag kodar själv inte med Python så jag vet inte om det finns nån inbyggd funktion.
SV: Python jämföra värden i tuppel
Postat: 21 jun 2007, 15:05
av Lars
Något sådant här kanske:
Kod: Markera allt
def all_same(seq):
return all(map(lambda x: x == seq[0], seq))
SV: Python jämföra värden i tuppel
Postat: 21 jun 2007, 15:10
av Chippen
Jag är ledsen lars, jag är fortfarande nybörjare, har du lust att förklara raden "all(map(lambda x: x == seq[0], seq))" lite närmare?
SV: Python jämföra värden i tuppel
Postat: 21 jun 2007, 15:48
av Lars
Det är kanske lite överkurs, men just därför är det kul
lambda x: x == seq[0] är en funktion utan namn. Den tar ett argument x och returnerar resultatet av "x == seq[0]", d.v.s. True eller False.
map(f, seq) är detsamma som (f(seq[0]), f(seq[1]) ... f(seq[n-1])). Argumentet seq kan vara en lista, en tuple eller någon annan sekvens, resultatet blir av samma typ.
Så map(lambda x: x == seq[0], seq) ger alltså något i stil med (True, False, True, True). Första värdet i listan blir alltid sant eftersom vi jämför med seq[0] hela tiden.
Funktionen all(seq) returnerar helt enkelt True om alla värden i sekvensen är sanna, annars False.
Lambda och map kommer från LISP/Scheme, de används väldigt mycket där och kanske inte så ofta i Python. Men de är väldigt smidiga för att bearbeta listor.
SV: Python jämföra värden i tuppel
Postat: 25 jun 2007, 16:04
av Chippen
Jag har försökt förstå ett par gånger, men det funkar inte riktigt. Jag tror detta får vänta tills jag har mognat lite

SV: Python jämföra värden i tuppel
Postat: 03 jul 2007, 08:22
av Victor
Jag lånar tråden lite då detta är nästan det jag vill göra, dock vill jag inte veta om de är exakt lika med varandra utan kolla om de är lika med en if-sats. Funktionen ska kolla alla andra värden och jämföra det med det utvalda på ett så smidigt sätt som möjligt.. Hjälp?
EDIT: Ska tillägga att jag läser ur en fil som kan vara ganska stor. Hur gör jag på bästa sätt för att optimera?
EDIT2: Den ska hoppa över det värdet som jämförs med alla andra.. (ett som är konstant genom loopen, om det nu ska vara en loop(?))
SV: Python jämföra värden i tuppel
Postat: 03 jul 2007, 16:10
av Smygis
Victor skrev:
Jag lånar tråden lite då detta är nästan det jag vill göra, dock vill jag inte veta om de är exakt lika med varandra utan kolla om de är lika med en if-sats. Funktionen ska kolla alla andra värden och jämföra det med det utvalda på ett så smidigt sätt som möjligt.. Hjälp?
EDIT: Ska tillägga att jag läser ur en fil som kan vara ganska stor. Hur gör jag på bästa sätt för att optimera?
EDIT2: Den ska hoppa över det värdet som jämförs med alla andra.. (ett som är konstant genom loopen, om det nu ska vara en loop(?))
Nu förstår jag inte riktigt. Vad är det du vill? Speciellt "dock vill jag inte veta om de är exakt lika med varandra utan kolla om de är lika med en if-sats." makes no sense to me.
Jag förstår att du har en lista med tal. Plockar ut ett tal ur den listan. Sedan ska den på något sätt gämföras med resten. Men hur?
typ:
Kod: Markera allt
for i in lista:
if i == tal:
# Här hamnar all kod.
SV: Python jämföra värden i tuppel
Postat: 03 jul 2007, 16:26
av Victor
Oj, trodde att jag tagit bort min post.. Jag kan säga såhär, jag är trött och var ännu tröttare när jag skrev inlägget. Kontentan är att jag inte fick det att funka just då men efter en rejäl lunch kom jag på det så jag har löst det nu. Tack ändå

SV: Python jämföra värden i tuppel
Postat: 04 jul 2007, 09:06
av Chippen
Smygis skrev:
Victor skrev:
Jag lånar tråden lite då detta är nästan det jag vill göra, dock vill jag inte veta om de är exakt lika med varandra utan kolla om de är lika med en if-sats. Funktionen ska kolla alla andra värden och jämföra det med det utvalda på ett så smidigt sätt som möjligt.. Hjälp?
EDIT: Ska tillägga att jag läser ur en fil som kan vara ganska stor. Hur gör jag på bästa sätt för att optimera?
EDIT2: Den ska hoppa över det värdet som jämförs med alla andra.. (ett som är konstant genom loopen, om det nu ska vara en loop(?))
Nu förstår jag inte riktigt. Vad är det du vill? Speciellt "dock vill jag inte veta om de är exakt lika med varandra utan kolla om de är lika med en if-sats." makes no sense to me.
Jag förstår att du har en lista med tal. Plockar ut ett tal ur den listan. Sedan ska den på något sätt gämföras med resten. Men hur?
typ:
Kod: Markera allt
for i in lista:
if i == tal:
# Här hamnar all kod.
Det där är ju ett lättare sätt för att göra det jag vill också... jag kan ju helt sonika skapa en while-slinga där i är mindre än antalet i tuppeln sedan jämför jag det första värden emot
...tack