List::Util - Häufig benötigte Tools für Listen und Arrays

| | Kommentare (0)

List::Util von Graham Barr, das seit Perl 5.8.0 zu den Core-Modulen gehört, stellt eine Reihe von häufig gebrauchten Funktionen rund um Listen bzw. Arrays zur Verfügung.

Minimum, Maximum und Summe einer Liste

Die Funktionen min() und max(), liefern die kleinste bzw. größte Zahl einer Liste; sum() liefert die Summe aller Zahlen der Liste:

#!/usr/bin/perl 
use strict;
use warnings;

use List::Util qw/max min sum/;

my @zahlen = qw/ 5 10 15 20 42 25 30 4 35 17 2 8 13 /;

my $min = min(@zahlen);
my $max = max(@zahlen);
my $sum = sum(@zahlen);

print "Minimum: $min\n";
print "Maximum: $max\n";
print "Summe:   $sum\n";

Das Programm erzeugt folgende Ausgabe:

Minimum: 2
Maximum: 42
Summe:   226

Für Strings stehen die Funktionen maxstr() und minstr() zur Verfügung.

Mischen einer Liste

Die Funktion shuffle() vermengt die Element der Liste in zufälliger Reihenfolge:

#!/usr/bin/perl 
use strict;
use warnings;

use List::Util qw/shuffle/;

my @zahlen = qw/ 5 10 15 20 42 25 30 4 35 /;
print "Zahlen in Ursprungsreihenfolge:    @zahlen\n";

@zahlen = shuffle @zahlen;
print "Zahlen in zufaelliger Reihenfolge: @zahlen\n";

Das Programm erzeugt (z.B.) folgende Ausgabe:

Zahlen in Ursprungsreihenfolge:    5 10 15 20 42 25 30 4 35
Zahlen in zufaelliger Reihenfolge: 20 4 35 5 25 10 30 42 15

Das erste Element einer Liste, welches einem bestimmtem Kriterium entspricht

Die Funktion first() liefert das erste Element einer Liste, welches einem bestimmtem Kriterium entspricht:

#!/usr/bin/perl 
use strict;
use warnings;

use List::Util qw/first/;

my @zahlen = qw/ 5 10 15 20 42 25 30 4 35 /;

	# Erstes Element des Array zahlen, das groesser als 10 ist
my $first = first { $_ > 10 } @zahlen ;
print "First:   $first\n";

Das Programm erzeugt folgende Ausgabe:

First:    15

Reduce - Eine Liste auf einen einzelnen Wert reduzieren

Die Funktion reduce() erzeugt aus einer Liste einen einzelnen Wert.

Den beiden speziellen Variablen $a und $b wird im ersten Durchlauf von reduce() die ersten beiden Elemente der Liste zugeordnet. In jedem weiteren Lauf wird das Ergebnis des vorherigen Laufs der Variablen $a zugeordnet und das nächste Element der Liste der Variablen $b.

#!/usr/bin/perl 
use strict;
use warnings;

use List::Util qw/reduce/;

my @zahlen = qw/ 5 10 15 20 42 25 30 4 35 /;

{
	no warnings; # Keine Warnungen in diesem Block
	my $produkt = reduce { $a * $b } @zahlen;
	print "Produkt 1: $produkt\n";
	$produkt = 5 * 10 * 15 * 20 * 42 * 25 * 30 * 4 * 35;
	print "Produkt 2: $produkt\n";
}

Um die gut gemeinten Warnungen bzzgl. $a und $b zu unterdrücken, werden Warnungen innerhalb eines nackten Blocks begrenzt unterdrückt.

Das Programm erzeugt folgende Ausgabe:

Produkt 1: 66150000000
Produkt 2: 66150000000

MoreUtils

Weitere hilfreiche Tools für Listen stellen List::MoreUtils und List::AllUtils bereit.

Siehe auch:

Jetzt kommentieren

Über diese Seite

Diese Seite enthält einen einen einzelnen Eintrag von Thomas Fahle vom 13.12.09 20:30.

Perl Advent(ures) 2009 ist der vorherige Eintrag in diesem Blog.

Modern Perl Ubuntu 8.04.3 LTS Live DVD ist der nächste Eintrag in diesem Blog.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.

Fachzeitschriften

Blog Roll

Powered by

Powered by Movable Type 5.2.10

Creative Commons-Lizenz

Creative Commons License
Dieses Weblog steht unter einer Creative Commons-Lizenz.