Sim, isso está violando o princípio DRY. O princípio DRY não é absoluto e deve ser usado com um padrão pessoal. Nós não vivemos em um mundo perfeito.
A frequência de uso é um grande problema no entanto. Se você estiver copiando e colando o mesmo código com frequência, eu diria que você deve SECAR.
É fácil concordar que o loop é um pouco detalhado (isto é, o i ), um iterador ou melhor um fluxo (passando uma expressão de função lambda sendo repetidamente chamada) pode ser um estilo melhor.
Em seguida, o problema não é DRY, mas sim que o código está funcionando geralmente trabalhando em todo i-tuples, registros, mas o loop lida com uma segunda dimensão.