Ignore case em strings Python [duplicado]

Esta pergunta já tem uma resposta aqui:

Como faço uma comparação de cadeias que não diferencia maiúsculas de minúsculas? 11 respostas

Qual é a maneira mais fácil de comparar strings em Python, ignorando maiúsculas e minúscula

Claro que se pode fazer (str1.lower () <= str2.lower ()), etc., mas isso criou duas seqüências temporárias adicionais (com as óbvias alocações / g-c

Acho que estou procurando um equivalente ao stricmp de C ().

[Um pouco mais de contexto solicitado, então demonstrarei com um exemplo trivial:]

Suponha que você queira classificar uma longa lista de strings. Você simplesmente faz theList.sort (). Trata-se de comparações de cadeias O (n * log (n)) e nenhum gerenciamento de memória (pois todas as cadeias e elementos da lista são algum tipo de ponteiro inteligente). Vocês estão felizes

Agora, você quer fazer o mesmo, mas ignore o caso (vamos simplificar e dizer que todas as strings são ascii, para que os problemas de localidade possam ser ignorados). Você pode executar theList.sort (key = lambda s: s.lower ()), mas causa duas novas alocações por comparação, além de sobrecarregar o coletor de lixo com as seqüências duplicadas (reduzidas). Cada um desses ruídos de gerenciamento de memória é uma ordem de magnitude mais lenta que a simples comparação de cadeia

gora, com uma função semelhante ao stricmp (), você faz: theList.sort (cmp = stricmp) e é tão rápido e fácil de usar quanto o theList.sort (). Você está feliz de novo.

O problema é que qualquer comparação sem distinção entre maiúsculas e minúsculas baseada em Python envolve duplicação implícita de cadeias de caracteres, então eu esperava encontrar comparações baseadas em C (talvez na cadeia de módulos

Não foi possível encontrar nada parecido, daí a pergunta aqui. (Espero que isso esclareça a pergunta

questionAnswers(16)

yourAnswerToTheQuestion