home.social

#tuple — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #tuple, aggregated by home.social.

  1. I'll start the morning today with some tea instead of ☕, hands on code now. Have a lot to do but want to take some time during the week to try out the most recent alpha version of for Linux. We'll see how well it works for me under 24.04 LTS (yes, I'm a boring rails dev who doesn't use Arch or )

  2. Python для начинающих: () или []? Ответ, который изменит ваш код

    Положа руку на сердце, давайте признаемся: когда вы только начинали учить Python, вам наверняка на первом же занятии вам сказали: «Списки ( list ) — изменяемые, а кортежи ( tuple ) — нет. Запомнили? Молодцы». И большинство из нас кивнуло и пошло дальше. Казалось бы, всё просто: если данные могут меняться — берём квадратные скобки [] , если это константа — круглые () . Задача решена. А что, если я скажу, что на этом простом правиле заканчивается Python для новичков и начинается Python для профессионалов? Потому что за этой банальной разницей скрывается целый мир оптимизаций, архитектурных решений и подводных камней. Вы когда-нибудь задумывались, почему кортежи на самом деле быстрее списков? Не на уровне теории, а на уровне байтов и выделения памяти? Или почему Python позволяет использовать кортеж как ключ словаря, а при попытке сделать то же самое со списком просто взрывается с ошибкой TypeError ?

    habr.com/ru/articles/965592/

    #tuple #list #python3 #python_для_начинающих

  3. CW: Кортежі у :haskell:

    Кортежі — це гетерогенні структури даних, фіксованої довжини, та з елементами здебільшого різних типів.

    Створюються вони за допомоги бінарного оператора (,).

    > (,) 'c' True
    ('c',True)
    

    При цьому в нас виходить двох елементний кортеж, часто його ще називають парою. Але кортежі можуть бути й довші, або коротші.

    Найкоротший кортеж - це порожній кортеж.

    > ()
    ()
    

    Якщо нам потрібно більше елементів, то значить треба додати більше ком. Але кортежу довжиною в один елемент не існує, оскільки синтаксично його не можливо створити через те що елемент в дужках, наприклад (3), це просто групування.

    > (,,) 4 'a' False
    (4,'a',False)
    > (,,,) 4 'a' False "Haskell"
    (4,'a',False,"Haskell")
    

    Але створювати таким синтаксисом не дуже зручно, оскільки нам постійно потрібно рахувати кількість аргументів, й вказувати відповідну кількість ком, на одну менше за значень. Для спрощення, синтаксис хаскеля трохи підцукрили, й дозволили робити нам так як вони відображаються.

    > (4, 'a', False, "Haskell")
    (4,'a',False,"Haskell")
    

    Тепер перейдемо до їхніх типів.

    Нагадую: простори імен типів та всього іншого відокремлені.

    Тип кортежів це ().

    > :t ()
    () :: ()
    

    Якщо це не порожній кортеж, то й тип не порожній.

    > :t ('c', True)
    ('c', True) :: (Char, Bool)
    

    Це все добре, але треба якось же із ними працювати й отримувати окремі елементи. У стандартній бібліотеці для цього є кілька готових функцій, наприклад візьмемо fst котра повертає перший елемент, та snd котра повертає другий елемент.

    > p = (1,2)
    > fst p
    1
    > snd p
    2
    

    Ці функції працюють тільки з парами, і реалізовуються через зіставлення.

    fst (x,_) = x
    snd (_,y) = y
    

    #ukrhaskell #haskell #tuple #кортежі #типи #програмування

  4. Single Element Tuple in Python:
    A single element tuple in Python is defined by placing a comma after the element, e.g., t = (5,).
    #Python #Tuple #PythonTips #LearnPython #Coding #PythonBasics #DevTips #SingleElementTuple #PythonProgramming #codenewbie

  5. I really like the concept of “speed back” high bandwidth full team peer feedback retro sesssions.

    Particularly for how it normalizes giving feedback to each other and makes it an expected part of the process.

    #snyk #distributed #tuple overcast.fm/+ABM8Qiyi6Ag

  6. Testing the Performance of Python Named Tuples: are named tuples slower than ordinary ones? Let's find out. (Spoiler alert: yes, a bit.)

    codedrome.substack.com/p/testi

    #python #programming #tuple #namedtuple

  7. tuple в CPython – мутабельный! И другие шокирующие детали из C-шной реализации

    Привет! Меня зовут Никита Соболев, я core-разработчик языка программирования CPython, а так же автор серии видео про его устройство. Я продолжаю свой цикл статей на хабре про детали реализации питона. Сегодня я хочу рассказать, как tuple устроен внутри. Под катом будет про: мутабельность кортежей (и планы по отмене такого поведения), дичь с ctypes , переиспользование памяти и другие оптимизации. Ну и конечно – мое полное видео на полтора часа, где будет множество дополнительной информации о деталях работы VM. Если вам такое интересно или целиком незнакомо – добро пожаловать!

    habr.com/ru/articles/874608/

    #python #c #cpython #compiler #tuple

  8. Реализуем эффективный тупль с помощью C++26

    Свет видел много любительских реализаций std::tuple , и реализация своих велосипедов — наверное, это действительно действенный способ обучения: вряд-ли можно сказать, что ты что-то по-настоящему понимаешь, если не можешь объяснить, как это что-то устроено. Многие пытливые умы на протяжении десятилетий задавались вопросом: как же реализован std::tuple , как мне реализовать свой тупль (кортеж)? [1] И немало было дано ответов на такие вопросы и написано статей ( [2] ). Однако я берусь утверждать, что все они имеют один фатальный недостаток ! Конкретнее, они все рассматривают в основном лишь один (и при этом неэффективный) способ реализации : с помощью множественного наследования или рекурсивного инстанцирования, имеющий в свой очередь множество своих недостатков, главный из которых — неэффективное использование памяти. В то время как современный C++ позволяет реализовать тупль гораздо проще (без обилия шаблоноты) и эффективнее . Войти в мир эффективных реализаций туплей

    habr.com/ru/articles/835176/

    #c++ #c++26 #tuple

  9. @diazona @j

    >>> def t(*args):
    ... return tuple(args)
    ...
    >>> x = t(3)
    >>> x
    (3,)

    (half in jest)

    I think the comma making the tuple is one of those things that you trip over when you're brand-new to Python, and then you get it and it's not an issue much after that.

    #tuple #comma #syntax

  10. Як же мене після C++ навіть на Python тягне оптимізувати там де ніхто не звертає уваги. До прикладу багато хто використовує всюди списки дам де це не потрібно і можна взяти кортеж.

    Обʼєкт типу object займає 16 BYTES. Це можна дізнатись викликавши метод __sizeof__ в обʼєкта.

    o = object()
    o.__sizeof__()
    

    Від цього типу наслідуються всі інші стандартні й не тільки типи навіть якщо явно цього не вказано. Тому це найменший можливий розмір будь-якого обʼєкта. Перевірити це можна за допомоги функції issubclass яка приймає два типи та повертає значення типу bool.

    >>> issubclass(int, object)
    True
    >>> issubclass(float, object)
    True
    >>> issubclass(bool, object)
    True
    >>> issubclass(str, object)
    True
    >>> issubclass(list, object)
    True
    >>> issubclass(tuple, object)
    True
    >>> class A:
    ...     pass
    ... 
    >>> issubclass(A, object)
    True
    

    Саме через це всі обʼєкти мають функцію __sizeof__ і не тільки.

    Якщо ми подивимось на розміри стандартних типів, то можемо трохи здивуватись.

    >>> int().__sizeof__()
    28
    >>> float().__sizeof__()
    24
    >>> bool().__sizeof__()
    28
    >>> str().__sizeof__()
    49
    >>> tuple().__sizeof__()
    24
    >>> list().__sizeof__()
    40
    >>> set().__sizeof__()
    200
    >>> dict().__sizeof__()
    48
    

    Найбільше я здивувався розміру типу bool. Він займає скільки ж як і int, і є більшим за float та tuple. І це все розміри порожніх (нульових) обʼєктів.

    Тепер порівняємо кортежі та списками з однаковим вмістом.

    >>> t = (1,2,3,4,5,6)
    >>> l = [1,2,3,4,5,6]
    
    >>> t.__sizeof__()
    72
    >>> l.__sizeof__()
    88
    

    Різниця та ж що й при порожніх контейнерах через те що контейнер зберігає тільки посилання на обʼєкт. Можемо в цьому переконатись за id обʼєктів.

    >>> id(t[0]) == id(l[0])
    True
    >>> t[0] is l[0]
    True
    

    Оператор is робить те саме, він порівнює ідентифікатори.

    Це добре що python оптимізує програму не створюючи зайвих обʼєктів, але всеодно всі обʼєкти займають дуже багато місця. Саме через це я й ненавиджу такі мови як python, js...

    #програмування #python #sizeof #розміри #типи #int #float #list #tuple #списки #кортежі #sizeof #object #оптимізація #бісить

  11. #rejected by #NYT #SpellingBee as #notAWord but it #IsAWord #pitty #glinty and (from an earlier game) #tuple plus rejected but #shouldBeAWord (meaning "putting the dots on your letters" or "the collection of dots on the letters") #tittling

    #WordsThatArent #onlineGame #NYTimes #NYT

  12. I’m delighted to hear #Tuple is still a going concern. I haven’t used it for so long I literally couldn’t name the company at which I did, but it did exactly what it said on the tin: low latency, high quality screen sharing and remote control. If I remember right, the audio quality was so good we badgered them for audio-only calls and then abandoned Skype. tuple.app/

  13. #Python #noob question:
    I get the technical differences between #List #Set and #Tuple but I can’t find examples where it’s clear that you have to use one of these, and can’t use the other ones.
    Has someone an article or a site that helps me on this topic?

  14. I just tried out tuple.app/ for the first time today.
    This was - hands down - the best screensharing experience I have ever had!
    Everything was buttery smooth, interacting with the other persons screen was seemless. Just overall great!

    #tuple.app #tuple #pairing #remote #screen #sharing

  15. Several #programming #languages know the concept of a #tuple: a custom grouping of values (or references thereto) that can be created at will and returned from a process.

    Some people have claimed that #java doesn't allow such behavior.

    It does.

    Well: kind-of.

    The problem with java up until version 11 is that is didn't have type inference, which makes returning tuples quite elaborate, but not impossible.

  16. #rejected by #NYT #SpellingBee as #notAWord but it #IsAWord #pitty #glinty and (from an earlier game) #tuple plus rejected but #shouldBeAWord (meaning "putting the dots on your letters" or "the collection of dots on the letters") #tittling

    #WordsThatArent #onlineGame #NYTimes #NYT

  17. #rejected by #NYT #SpellingBee as #notAWord but it #IsAWord #pitty #glinty and (from an earlier game) #tuple plus rejected but #shouldBeAWord (meaning "putting the dots on your letters" or "the collection of dots on the letters") #tittling

    #WordsThatArent #onlineGame #NYTimes #NYT

  18. #rejected by #NYT #SpellingBee as #notAWord but it #IsAWord #pitty #glinty and (from an earlier game) #tuple plus rejected but #shouldBeAWord (meaning "putting the dots on your letters" or "the collection of dots on the letters") #tittling

    #WordsThatArent #onlineGame #NYTimes #NYT

  19. Testing the Performance of Python Named Tuples: are named tuples slower than ordinary ones? Let's find out. (Spoiler alert: yes, a bit.)

    codedrome.substack.com/p/testi

    #python #programming #tuple #namedtuple

  20. Testing the Performance of Python Named Tuples: are named tuples slower than ordinary ones? Let's find out. (Spoiler alert: yes, a bit.)

    codedrome.substack.com/p/testi

    #python #programming #tuple #namedtuple

  21. Testing the Performance of Python Named Tuples: are named tuples slower than ordinary ones? Let's find out. (Spoiler alert: yes, a bit.)

    codedrome.substack.com/p/testi

    #python #programming #tuple #namedtuple

  22. Testing the Performance of Python Named Tuples: are named tuples slower than ordinary ones? Let's find out. (Spoiler alert: yes, a bit.)

    codedrome.substack.com/p/testi

    #python #programming #tuple #namedtuple

  23. Як же мене після C++ навіть на Python тягне оптимізувати там де ніхто не звертає уваги. До прикладу багато хто використовує всюди списки дам де це не потрібно і можна взяти кортеж.

    Обʼєкт типу object займає 16 BYTES. Це можна дізнатись викликавши метод __sizeof__ в обʼєкта.

    o = object()
    o.__sizeof__()
    

    Від цього типу наслідуються всі інші стандартні й не тільки типи навіть якщо явно цього не вказано. Тому це найменший можливий розмір будь-якого обʼєкта. Перевірити це можна за допомоги функції issubclass яка приймає два типи та повертає значення типу bool.

    >>> issubclass(int, object)
    True
    >>> issubclass(float, object)
    True
    >>> issubclass(bool, object)
    True
    >>> issubclass(str, object)
    True
    >>> issubclass(list, object)
    True
    >>> issubclass(tuple, object)
    True
    >>> class A:
    ...     pass
    ... 
    >>> issubclass(A, object)
    True
    

    Саме через це всі обʼєкти мають функцію __sizeof__ і не тільки.

    Якщо ми подивимось на розміри стандартних типів, то можемо трохи здивуватись.

    >>> int().__sizeof__()
    28
    >>> float().__sizeof__()
    24
    >>> bool().__sizeof__()
    28
    >>> str().__sizeof__()
    49
    >>> tuple().__sizeof__()
    24
    >>> list().__sizeof__()
    40
    >>> set().__sizeof__()
    200
    >>> dict().__sizeof__()
    48
    

    Найбільше я здивувався розміру типу bool. Він займає скільки ж як і int, і є більшим за float та tuple. І це все розміри порожніх (нульових) обʼєктів.

    Тепер порівняємо кортежі та списками з однаковим вмістом.

    >>> t = (1,2,3,4,5,6)
    >>> l = [1,2,3,4,5,6]
    
    >>> t.__sizeof__()
    72
    >>> l.__sizeof__()
    88
    

    Різниця та ж що й при порожніх контейнерах через те що контейнер зберігає тільки посилання на обʼєкт. Можемо в цьому переконатись за id обʼєктів.

    >>> id(t[0]) == id(l[0])
    True
    >>> t[0] is l[0]
    True
    

    Оператор is робить те саме, він порівнює ідентифікатори.

    Це добре що python оптимізує програму не створюючи зайвих обʼєктів, але всеодно всі обʼєкти займають дуже багато місця. Саме через це я й ненавиджу такі мови як python, js...

    #програмування #python #sizeof #розміри #типи #int #float #list #tuple #списки #кортежі #sizeof #object #оптимізація #бісить

  24. Як же мене після C++ навіть на Python тягне оптимізувати там де ніхто не звертає уваги. До прикладу багато хто використовує всюди списки дам де це не потрібно і можна взяти кортеж.

    Обʼєкт типу object займає 16 BYTES. Це можна дізнатись викликавши метод __sizeof__ в обʼєкта.

    o = object()
    o.__sizeof__()
    

    Від цього типу наслідуються всі інші стандартні й не тільки типи навіть якщо явно цього не вказано. Тому це найменший можливий розмір будь-якого обʼєкта. Перевірити це можна за допомоги функції issubclass яка приймає два типи та повертає значення типу bool.

    >>> issubclass(int, object)
    True
    >>> issubclass(float, object)
    True
    >>> issubclass(bool, object)
    True
    >>> issubclass(str, object)
    True
    >>> issubclass(list, object)
    True
    >>> issubclass(tuple, object)
    True
    >>> class A:
    ...     pass
    ... 
    >>> issubclass(A, object)
    True
    

    Саме через це всі обʼєкти мають функцію __sizeof__ і не тільки.

    Якщо ми подивимось на розміри стандартних типів, то можемо трохи здивуватись.

    >>> int().__sizeof__()
    28
    >>> float().__sizeof__()
    24
    >>> bool().__sizeof__()
    28
    >>> str().__sizeof__()
    49
    >>> tuple().__sizeof__()
    24
    >>> list().__sizeof__()
    40
    >>> set().__sizeof__()
    200
    >>> dict().__sizeof__()
    48
    

    Найбільше я здивувався розміру типу bool. Він займає скільки ж як і int, і є більшим за float та tuple. І це все розміри порожніх (нульових) обʼєктів.

    Тепер порівняємо кортежі та списками з однаковим вмістом.

    >>> t = (1,2,3,4,5,6)
    >>> l = [1,2,3,4,5,6]
    
    >>> t.__sizeof__()
    72
    >>> l.__sizeof__()
    88
    

    Різниця та ж що й при порожніх контейнерах через те що контейнер зберігає тільки посилання на обʼєкт. Можемо в цьому переконатись за id обʼєктів.

    >>> id(t[0]) == id(l[0])
    True
    >>> t[0] is l[0]
    True
    

    Оператор is робить те саме, він порівнює ідентифікатори.

    Це добре що python оптимізує програму не створюючи зайвих обʼєктів, але всеодно всі обʼєкти займають дуже багато місця. Саме через це я й ненавиджу такі мови як python, js...

    #програмування #python #sizeof #розміри #типи #int #float #list #tuple #списки #кортежі #sizeof #object #оптимізація #бісить

  25. Як же мене після C++ навіть на Python тягне оптимізувати там де ніхто не звертає уваги. До прикладу багато хто використовує всюди списки дам де це не потрібно і можна взяти кортеж.

    Обʼєкт типу object займає 16 BYTES. Це можна дізнатись викликавши метод __sizeof__ в обʼєкта.

    o = object()
    o.__sizeof__()
    

    Від цього типу наслідуються всі інші стандартні й не тільки типи навіть якщо явно цього не вказано. Тому це найменший можливий розмір будь-якого обʼєкта. Перевірити це можна за допомоги функції issubclass яка приймає два типи та повертає значення типу bool.

    >>> issubclass(int, object)
    True
    >>> issubclass(float, object)
    True
    >>> issubclass(bool, object)
    True
    >>> issubclass(str, object)
    True
    >>> issubclass(list, object)
    True
    >>> issubclass(tuple, object)
    True
    >>> class A:
    ...     pass
    ... 
    >>> issubclass(A, object)
    True
    

    Саме через це всі обʼєкти мають функцію __sizeof__ і не тільки.

    Якщо ми подивимось на розміри стандартних типів, то можемо трохи здивуватись.

    >>> int().__sizeof__()
    28
    >>> float().__sizeof__()
    24
    >>> bool().__sizeof__()
    28
    >>> str().__sizeof__()
    49
    >>> tuple().__sizeof__()
    24
    >>> list().__sizeof__()
    40
    >>> set().__sizeof__()
    200
    >>> dict().__sizeof__()
    48
    

    Найбільше я здивувався розміру типу bool. Він займає скільки ж як і int, і є більшим за float та tuple. І це все розміри порожніх (нульових) обʼєктів.

    Тепер порівняємо кортежі та списками з однаковим вмістом.

    >>> t = (1,2,3,4,5,6)
    >>> l = [1,2,3,4,5,6]
    
    >>> t.__sizeof__()
    72
    >>> l.__sizeof__()
    88
    

    Різниця та ж що й при порожніх контейнерах через те що контейнер зберігає тільки посилання на обʼєкт. Можемо в цьому переконатись за id обʼєктів.

    >>> id(t[0]) == id(l[0])
    True
    >>> t[0] is l[0]
    True
    

    Оператор is робить те саме, він порівнює ідентифікатори.

    Це добре що python оптимізує програму не створюючи зайвих обʼєктів, але всеодно всі обʼєкти займають дуже багато місця. Саме через це я й ненавиджу такі мови як python, js...

    #програмування #python #sizeof #розміри #типи #int #float #list #tuple #списки #кортежі #sizeof #object #оптимізація #бісить

  26. Як же мене після C++ навіть на Python тягне оптимізувати там де ніхто не звертає уваги. До прикладу багато хто використовує всюди списки дам де це не потрібно і можна взяти кортеж.

    Обʼєкт типу object займає 16 BYTES. Це можна дізнатись викликавши метод __sizeof__ в обʼєкта.

    o = object()
    o.__sizeof__()
    

    Від цього типу наслідуються всі інші стандартні й не тільки типи навіть якщо явно цього не вказано. Тому це найменший можливий розмір будь-якого обʼєкта. Перевірити це можна за допомоги функції issubclass яка приймає два типи та повертає значення типу bool.

    >>> issubclass(int, object)
    True
    >>> issubclass(float, object)
    True
    >>> issubclass(bool, object)
    True
    >>> issubclass(str, object)
    True
    >>> issubclass(list, object)
    True
    >>> issubclass(tuple, object)
    True
    >>> class A:
    ...     pass
    ... 
    >>> issubclass(A, object)
    True
    

    Саме через це всі обʼєкти мають функцію __sizeof__ і не тільки.

    Якщо ми подивимось на розміри стандартних типів, то можемо трохи здивуватись.

    >>> int().__sizeof__()
    28
    >>> float().__sizeof__()
    24
    >>> bool().__sizeof__()
    28
    >>> str().__sizeof__()
    49
    >>> tuple().__sizeof__()
    24
    >>> list().__sizeof__()
    40
    >>> set().__sizeof__()
    200
    >>> dict().__sizeof__()
    48
    

    Найбільше я здивувався розміру типу bool. Він займає скільки ж як і int, і є більшим за float та tuple. І це все розміри порожніх (нульових) обʼєктів.

    Тепер порівняємо кортежі та списками з однаковим вмістом.

    >>> t = (1,2,3,4,5,6)
    >>> l = [1,2,3,4,5,6]
    
    >>> t.__sizeof__()
    72
    >>> l.__sizeof__()
    88
    

    Різниця та ж що й при порожніх контейнерах через те що контейнер зберігає тільки посилання на обʼєкт. Можемо в цьому переконатись за id обʼєктів.

    >>> id(t[0]) == id(l[0])
    True
    >>> t[0] is l[0]
    True
    

    Оператор is робить те саме, він порівнює ідентифікатори.

    Це добре що python оптимізує програму не створюючи зайвих обʼєктів, але всеодно всі обʼєкти займають дуже багато місця. Саме через це я й ненавиджу такі мови як python, js...

    #програмування #python #sizeof #розміри #типи #int #float #list #tuple #списки #кортежі #sizeof #object #оптимізація #бісить