Большинство программистов Python являются виновными (Me включены) всегда используя список, даже не рассматривая кортеж вообще. Конечно, для некоторых случаев использования кортеж должен быть лучше правильно? Продолжайте читать для одного такого случая.
Tupple похож на список, но неизменно, поэтому у него меньше встроенных методов. Тепы быстрее, чем списки, но оно заметно только тогда, когда размер кортежа значительно велик. Для переподачи на кортежи, проверьте это блог
Общее правило для использования кортежа только тогда, когда данные будут или не должны меняться.
# Create Tuple with two elements tup = (1, [2]) # Re-assign first element tup[0] = 3
Это не значит, что вы действительно не можете изменить кортеж. Если основной элемент кортежного элемента вызывается, то мы можем изменить его. Это может привести к непреднамеренным побочным эффектам. Например, детский/унаследованный класс может изменить элемент кортежного элемента, инициализированного родительским классом.
# Add element to existing List element inside Tuple tup[1].append(3) print(tup)
Лично я больше в глубоком обучении и должен иметь дело с файлами изображений. Файлы изображения имеют много популярных форматов, таких как JPG, PNG и SVG и т. Д. У нас часто есть ситуация, когда мы должны найти все файлы определенных типов из папки. Есть много способов идти об этом. Мы рассмотрим несколько вариантов.
Вариант 1: Использование списка
Фильтрация на основе типа расширения выполняется с помощью Эндонсвит
метод. Поскольку метод Endswith не принимает список, мы связываемся через все элементы расширения. Код выглядит читаемый и занимает около 2 микросекунда Что неплохо, но для каждого типа расширения мы должны проходить через все файлы еще раз. У меня есть подозрение, что мы можем сделать намного лучше.
# List of files in the folder all_files = ['cat.jpg', 'dog.png', 'report.docx', 'sales.csv'] # List of image file extensions img_exts_lst = ['jpg','png'] # Filter only image files using List img_files = [file for file in all_files for ext in img_exts_lst if file.endswith(ext)] print(img_files) # ['cat.jpg', 'dog.png']
Вариант 2: Использование кортежа
Почти похожий код Но мы можем пройти весь кортеж в качестве параметра к Эндонсвит
метод. Это удаляет дополнительную петлю и делает код даже короче Отказ Код теперь работает о 2 раза быстрее Отказ Чтобы запустить свои собственные эксперименты, используйте Это ноутбук в качестве базы.
# List of files in the folder all_files = ['cat.jpg', 'dog.png', 'report.docx', 'sales.csv'] # Tuple of image file extensions img_exts_tup = ('jpg','png') # Filter only image files using Tuple img_files = [file for file in all_files if file.endswith(img_exts_tup)] print(img_files) # ['cat.jpg', 'dog.png']
Некоторые методы, такие как Startswith
и Эндонсвит
Примите CUBLE в качестве параметра, если данные не изменяются, то лучше использовать кортеж или конвертировать список, чтобы кортеж до передачи данных к способу. Кортежи делают код выглядеть больше Элегантный и бежать быстрее Отказ Кроме того, не забывайте о ожесточить Отказ
Надеюсь, этот пост поможет вам быть более открытым для кортежей. Если у вас есть какие-либо вопросы или мысли, не стесняйтесь обращаться с комментариями здесь или Twitter Отказ
Оригинал: “https://dev.to/6aravind/use-case-for-python-tuple-5d7f”