# List of Names

\documentclass{scrartcl}

\usepackage{etoolbox}

% set up defaults so we don't get an error
% when we try to redefine these commands
\newcommand*{\surnamesep}{}%
\newcommand*{\lastsurname}{}%
\newcommand*{\prelastsurname}{}%

% define the handler macro:
\newcommand*{\dodisplayname}[1]{%
\surnamesep
\lastsurname
\renewcommand{\lastsurname}{%
\renewcommand{\surnamesep}{, }%
\renewcommand{\prelastsurname}{ and }%
#1%
}}%

% define the new command to process a list of names:
\newcommand*{\displaynames}[1]{%
% initialise:
\renewcommand*{\surnamesep}{}%
\renewcommand*{\lastsurname}{}%
\renewcommand*{\prelastsurname}{}%
% Iterate through list
\forcsvlist{\dodisplayname}{#1}%
% Finish off:
\prelastsurname \lastsurname
}

\begin{document}

\displaynames{Parrot,Canary,Zebra,Arara,Duck}

\end{document}