Як скласти змінні в Python?
Змінні призначені для зберігання даних. Назва змінної в Python повинна починатися з алфавітного символу або символу підкреслення і може містити алфавітно-цифрові символи і знак підкреслення. Крім того, назва змінної не повинна співпадати з назвою ключових слів мови Python. Ключових слів не так багато, їх легко запам'ятати:
False await else import pass None break except in raise True class finally is return and continue for lambda try as def from nonlocal while assert del global not with async elif if or yield
Наприклад, створимо змінну:
Тут визначено змінну name, яка зберігає рядок "Tom".
У пайтоні застосовується два типи найменування змінних: camel case та underscore notation.
Camel case має на увазі, що кожне нове підслівне в найменуванні змінної починається з великої літери. Наприклад:
Underscore notation передбачає, що підслів в найменуванні змінної поділяються знаком підкреслення. Наприклад:
Також треба враховувати регістрозалежність, тому змінні name і Name будуть представляти різні об'єкти.
дві різні змінні name = "Tom" Name = "Tom"
Визначивши змінну ми можемо використовувати в програмі. Наприклад, спробувати вивести її на консоль за допомогою вбудованої функції print :
name = "Tom" # визначення змінної name print(name) # виведення значення змінної name на консоль
Наприклад, визначення та застосування змінної в середовищі PyCharm:
Відмінною рисою змінної є те, що ми можемо змінювати її значення протягом роботи програми:
name = "Tom" # змінної name дорівнює "Tom" print(name) # виводить: Tom name = "Bob" # змінюємо значення на "Bob" print(name) # виводить: Bob
Типи даних
Змінна зберігає дані одного з типів даних. У Python існує безліч різних типів даних. В даному випадку розглянемо тільки базові типи: bool, int, float, complex і str.
Логічні значення
Тип bool представляє два логічні значення: True (вірно, істина) або False (невірно, брехня). Значення True служить у тому, щоб показати, що щось істинно. Тоді як значення False, навпаки, показує, що щось хибне. Приклад змінних даного типу:
isMarried = False print(isMarried) # False isAlive = True print(isAlive) # True
Цілі числа
Тип int є цілим числом, наприклад, 1, 4, 8, 50. Приклад
age = 21 print("Вік:", age) # Вік: 21 count = 15 print("Кількість:", count) # Кількість: 15
За замовчуванням стандартні числа розцінюються як числа у десятковій системі. Але Python також підтримує числа у двійковій, вісімковій та шістнадцятковій системах.
Для вказівки, що число є двійковою системою, перед числом ставиться префікс 0b :
a = 0b11 b = 0b1011 c = 0b100001 print(a) # 3 у десятковій системі print(b) # 11 у десятковій системі print(c) # 33 у десятковій системі
Для вказівки, що число представляє вісімкову систему, перед числом ставиться префікс 0o:
a = 0o7 b = 0o11 c = 0o17 print(a) # 7 у десятковій системі print(b) # 9 у десятковій системі print(c) # 15 у десятковій системі
Для вказівки, що число є шістнадцятковою системою, перед числом ставиться префікс 0x :
a = 0x0A b = 0xFF c = 0xA1 print(a) # 10 у десятковій системі print(b) # 255 у десятковій системі print(c) # 161 у десятковій системі
У будь-якій системі ми не передали число в функцію print для виведення на консоль, воно за умовчанням буде виводитися в десятковій системі.
Дробові числа
Тип float є число з плаваючою точкою, наприклад, 1.2 або 34.76. У якості роздільника цілої та дробової частин використовується крапка.
height = 1.68 pi = 3.14 weight = 68. print(height) # 1.68 print(pi) # 3.14 print(weight) # 68.0
Число з плаваючою точкою можна визначати в експоненційному записі:
x = 3.9e3 print(x) # 3900.0 x = 3.9e-3 print(x) # 0.0039
Число float може мати лише 18 значущих символів. Так, у цьому випадку використовуються лише два символи – 3.9. І якщо число занадто велике чи занадто мало, ми можемо записувати число у подібній нотації, використовуючи експоненту. Число після експоненти вказує ступінь числа 10, яке треба помножити основне число - 3.9.
Комплексні числа
Тип complex представляє комплексні числа у форматі речова_частина + уявна_частина j - після уявної частини вказується суфікс j
complexNumber = 1+2j print(complexNumber) # (1+2j)
Рядки
Тип str представляє рядки. Рядок представляє послідовність символів, укладену в одинарні або подвійні лапки, наприклад "hello" та "hello". У Python 3.x рядки представляють набір символів у кодуванні Unicode
message = "Hello World!" print(message) # Hello World! name = 'Tom' print(name) # Tom
При цьому, якщо рядок має багато символів, його можна розбити на частини та ці частини розмістити на різних рядках коду. У цьому випадку весь рядок полягає в круглі дужки, а її окремі частини – у лапки:
text = ("Laudate omnes gentes laudate " "Magnificat in secula ") print(text)
Якщо ми хочемо визначити багаторядковий текст, такий текст полягає у потрійні подвійні чи одинарні лапки:
''' Це коментар ''' text = '''Laudate omnes gentes laudate Magnificat in secula Et anima mea laudate Magnificat in secula ''' print(text)
При використанні потрійних одинарних лапок не варто плутати їх із коментарями: якщо текст у потрійних одинарних лапках присвоюється змінним, то це рядок, а не коментар.
Керуючі послідовності у рядку
Рядок може містити ряд спеціальних символів - послідовностей, що управляють. Деякі з них:
- \ : дозволяє додати всередину рядки слєш
- \' : дозволяє додати всередину рядка одинарну лапку
- \" : дозволяє додати всередину рядка подвійну лапку
- \n : здійснює перехід на новий рядок
- \t : додає табуляцію (4 відступи)
Застосуємо кілька послідовностей:
text = "Message:\n\"Hello World\"" print(text)
Консольний висновок програми:
Message: "Hello World"
Хоча подібні послідовності можуть нам допомогти в деяких справах, наприклад, помістити в рядок лапку, зробити табуляцію, перенесення на інший рядок. Але вони також можуть заважати. Наприклад:
path = "C:\python\name.txt" print(path)
Тут змінна path містить певний шлях до файлу. Однак усередині рядка зустрічаються символи "\n", які будуть інтерпретовані як послідовність, що управляє. Так, ми отримаємо наступний консольний висновок:
Щоб уникнути подібної ситуації, перед рядком ставиться символ r
path = r"C:\python\name.txt" print(path)
Вставка значень у рядок
Python дозволяє встроювати рядок значення інших змінних. Для цього всередині рядка змінні розміщуються у фігурних дужках <>, а перед усім рядком ставиться символ f:
userName = "Tom" userAge = 37 user = f"name: age: " print(user) # name: Tom age: 37
У цьому випадку на місце вставлятиметься значення змінної userName. Аналогічно замість буде вставлятися значення змінної userAge.
Динамічна типізація
Python є мовою з динамічною типізацією. А це означає, що змінна не прив'язана до певного типу.
Тип змінної визначається виходячи із значення, яке їй надано. Так, при присвоєння рядка в подвійних чи одинарних лапках змінна має тип str. При присвоєнні цілого числа Python автоматично визначає тип змінної як int. Щоб визначити змінну як об'єкт float, їй надається дробове число, в якому роздільником цілої та дробової частини є точка.
При цьому в процесі роботи програми ми можемо змінити тип змінної, надавши їй значення іншого типу:
userId = "abc" # тип str print(userId) userId = 234 # тип int print(userId)
За допомогою вбудованої функції type() динамічно можна дізнатися про поточний тип змінної:
userId = "abc" # тип str print(type(userId)) # userId = 234 # тип int print(type(userId)) #
Як створити елементи двох списків?
Якщо важливо зберегти початкові списки, спробуємо інакше:
# заповнення змінних a = [1, 2, 3, 4] b = [1, 2, 3] # обробка c = map(sum, zip(a + [0,]*(len(b)-len(a)) ), b + [0,]*(len(a)-len(b)))) # виведення результату print(list(c))
Варіант 3:
У Python 3.8 з'явився "морж" - оператор := Якщо важливо не повторити функціонал:
# заповнення змінних a = [1, 2, 3, 4] b = [1, 2, 3] # обробка c = map(sum, zip(a + [0, ]) * (x: = len(b) - (a)), b + [0, ] * -x)) # виведення результату print(list(c)) Результат: > [2, 4, 6, 4]
Варіант кумедний, але 1) він змінює вихідні списки; 2) повторює функціонал itertools.zip_longest
додав варіанти без зміни вихідних списків та варіант для Python 3.8 без повтору функціоналу
Якщо ви ще не "пройшли 'from' 'import'", то найпростіший варіант виглядає ось так:
з = list (map (lambda x, y: x + y, a, b))
c1 = [x+y for x,y in zip(a,b)] + (a if len(a) >= len(b) else b)[min(len(a), len(b)):]
При необхідності обернути це у виклик функції, сподіваюся, зможете зробити самостійно: на вхід a та b, зазначені вирази - як параметр у return.
Дякую тобі за відповідь) мені потрібно просто без компріхенш`на може просто через def і всередині def через for буду радий якщо допоможете = )
Якщо у вас списку ЗАВЖДИ точно будуть однієї довжини, то можна скористатися генератором списків і zip:
a = [1, 2, 3] b = [4, 5, 6] c = [x + y for x, y in zip (a, b)] print (c) # [5, 7, 9]
Але якщо ви не впевнені, що довжина списків буде однаковою хоч раз, то тут потрібно скористатися крутою бібліотекою itertools:
від import import zip_longest a = [1, 2, 3] b = [4, 5, 6, 10] c = [x+y for x, y in zip_longest(a, b, fillvalue=0) #fillvalue потрібен, якщо ваші списки різних рамерів і там, де не дістає елементів, доб'є нулями. print(c) # [5, 7, 9, 10]
Відповідь на коментар:
з import import zip_longest def add_list(a, b): c = [x+y for x, y in zip_longest(a, b, fillvalue=0)] return c a = [1, 2, 3] b = [4, 5 , 6, 10] summ_list = add_list(a, b) print(summ_list)