Что является самым простым способом сравнения строк в Python, игнорируя случай?
Конечно, можно сделать (str1.lower() <= str2.lower()) и т.д., но это создало две дополнительные временные строки (с очевидными накладными расходами alloc/g-c).
Я предполагаю, что ищу эквивалент C stricmp().
[Запрошено еще несколько контекстов, поэтому я продемонстрирую тривиальный пример:]
Предположим, вы хотите отсортировать список строк. Вы просто выполняете функциюList.sort(). Это O (n * log (n)) сравнение строк и отсутствие управления памятью (поскольку все строки и элементы списка - это своего рода интеллектуальные указатели). Вы счастливы.
Теперь вы хотите сделать то же самое, но проигнорируйте случай (пусть упростит и скажет все строки являются ascii, поэтому проблемы с локалью можно игнорировать). Вы можете сделать theList.sort(key = lambda s: s.lower()), но затем вы вызываете два новых распределения на сравнение, плюс бремя сборщика мусора с дублированным (опущены). Каждый такой шум управления памятью на порядок меньше, чем простое сравнение строк.
Теперь, используя функцию stricmp(), выполняемую на месте, вы делаете: theList.sort(cmp = stricmp) и он такой же быстрый и удобный для памяти, как и списокList.sort(). Вы снова счастливы.
Проблема заключается в том, что любое нечувствительное к Python сравнение подразумевает неявную строку дублирования, поэтому я ожидал найти сравнения на основе C (возможно, в строке модуля).
Не удалось найти ничего подобного, поэтому вопрос здесь. (Надеюсь, это прояснит вопрос).