Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
22 views

Python Tuple Sets Dictionary

The document discusses tuples, sets, and dictionaries in Python. Tuples are immutable lists that do not allow changes to their elements. Sets are unordered collections that cannot contain duplicate elements. Dictionaries store key-value pairs and allow mutable indexing of elements.

Uploaded by

Avantika Saxena
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views

Python Tuple Sets Dictionary

The document discusses tuples, sets, and dictionaries in Python. Tuples are immutable lists that do not allow changes to their elements. Sets are unordered collections that cannot contain duplicate elements. Dictionaries store key-value pairs and allow mutable indexing of elements.

Uploaded by

Avantika Saxena
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

Tuples

A tuple in Python is similar to a list. The difference between the two is that we cannot change the
elements of a tuple once it is assigned whereas we can change the elements of a list.

In short, a tuple is an immutable list. A tuple can not be changed in any way once it is created.

Characterstics

• Ordered
• Unchangeble
• Allows duplicate

Plan of attack
• Creating a Tuple
• Accessing items
• Editing items
• Adding items
• Deleting items
• Operations on Tuples
• Tuple Functions

Creating Tuples
# empty
t1 = ()
print(t1)
# create a tuple with a single item
t2 = ('hello',)
print(t2)
print(type(t2))
# homo
t3 = (1,2,3,4)
print(t3)
# hetro
t4 = (1,2.5,True,[1,2,3])
print(t4)
# tuple
t5 = (1,2,3,(4,5))
print(t5)
# using type conversion
t6 = tuple('hello')
print(t6)

()
('hello',)
<class 'tuple'>
(1, 2, 3, 4)
(1, 2.5, True, [1, 2, 3])
(1, 2, 3, (4, 5))
('h', 'e', 'l', 'l', 'o')

Accessing Items
• Indexing
• Slicing
print(t3)
print(t3[0])
print(t3[-1])

(1, 2, 3, 4)
1
4

t5[-1][0]

Editing items
print(t3)
t3[0] = 100
# immutable just like strings

(1, 2, 3, 4)

----------------------------------------------------------------------
-----
TypeError Traceback (most recent call
last)
<ipython-input-30-49d9e1416ccf> in <module>
1 print(t3)
----> 2 t3[0] = 100

TypeError: 'tuple' object does not support item assignment

Adding items
print(t3)
# not possible

(1, 2, 3, 4)
Deleting items
print(t3)
del t3
print(t3)

(1, 2, 3, 4)

----------------------------------------------------------------------
-----
NameError Traceback (most recent call
last)
<ipython-input-33-0a67b29ad777> in <module>
1 print(t3)
2 del t3
----> 3 print(t3)

NameError: name 't3' is not defined

t = (1,2,3,4,5)

t[-1:-4:-1]

(5, 4, 3)

print(t5)
del t5[-1]

(1, 2, 3, (4, 5))

----------------------------------------------------------------------
-----
TypeError Traceback (most recent call
last)
<ipython-input-35-2b39d140e8ae> in <module>
1 print(t5)
----> 2 del t5[-1]

TypeError: 'tuple' object doesn't support item deletion

Operations on Tuples
# + and *
t1 = (1,2,3,4)
t2 = (5,6,7,8)

print(t1 + t2)

print(t1*3)
# membership
1 in t1
# iteration
for i in t1:
print(i)

(1, 2, 3, 4, 5, 6, 7, 8)
(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4)
1
2
3
4

Tuple Functions
# len/sum/min/max/sorted
t = (1,2,3,4)
len(t)

sum(t)

min(t)

max(t)

sorted(t,reverse=True)

[4, 3, 2, 1]

# count

t = (1,2,3,4,5)

t.count(50)

# index
t.index(50)

----------------------------------------------------------------------
-----
ValueError Traceback (most recent call
last)
<ipython-input-51-cae2b6ba49a8> in <module>
1 # index
----> 2 t.index(50)

ValueError: tuple.index(x): x not in tuple

Difference between Lists and Tuples


• Syntax
• Mutability
• Speed
• Memory
• Built in functionality
• Error prone
• Usability
import time

L = list(range(100000000))
T = tuple(range(100000000))

start = time.time()
for i in L:
i*5
print('List time',time.time()-start)

start = time.time()
for i in T:
i*5
print('Tuple time',time.time()-start)

List time 9.853569507598877


Tuple time 8.347511053085327

import sys

L = list(range(1000))
T = tuple(range(1000))

print('List size',sys.getsizeof(L))
print('Tuple size',sys.getsizeof(T))

List size 9120


Tuple size 8056

a = [1,2,3]
b = a

a.append(4)
print(a)
print(b)

[1, 2, 3, 4]
[1, 2, 3, 4]

a = (1,2,3)
b = a

a = a + (4,)
print(a)
print(b)
(1, 2, 3, 4)
(1, 2, 3)

Why use tuple?


Special Syntax
# tuple unpacking
a,b,c = (1,2,3)
print(a,b,c)

1 2 3

a,b = (1,2,3)
print(a,b)

----------------------------------------------------------------------
-----
ValueError Traceback (most recent call
last)
<ipython-input-55-22f327f11d4b> in <module>
----> 1 a,b = (1,2,3)
2 print(a,b)

ValueError: too many values to unpack (expected 2)

a = 1
b = 2
a,b = b,a

print(a,b)

2 1

a,b,*others = (1,2,3,4)
print(a,b)
print(others)

1 2
[3, 4]

# zipping tuples
a = (1,2,3,4)
b = (5,6,7,8)

tuple(zip(a,b))

((1, 5), (2, 6), (3, 7), (4, 8))


Sets
A set is an unordered collection of items. Every set element is unique (no duplicates) and must
be immutable (cannot be changed).

However, a set itself is mutable. We can add or remove items from it.

Sets can also be used to perform mathematical set operations like union, intersection,
symmetric difference, etc.

Characterstics:

• Unordered
• Mutable
• No Duplicates
• Can't contain mutable data types

Creating Sets
# empty
s = set()
print(s)
print(type(s))
# 1D and 2D
s1 = {1,2,3}
print(s1)
#s2 = {1,2,3,{4,5}}
#print(s2)
# homo and hetro
s3 = {1,'hello',4.5,(1,2,3)}
print(s3)
# using type conversion

s4 = set([1,2,3])
print(s4)
# duplicates not allowed
s5 = {1,1,2,2,3,3}
print(s5)
# set can't have mutable items
s6 = {1,2,[3,4]}
print(s6)

set()
<class 'set'>
{1, 2, 3}
{1, 4.5, (1, 2, 3), 'hello'}
{1, 2, 3}
{1, 2, 3}
----------------------------------------------------------------------
-----
TypeError Traceback (most recent call
last)
<ipython-input-71-ab3c7dde6aed> in <module>
19 print(s5)
20 # set can't have mutable items
---> 21 s6 = {1,2,[3,4]}
22 print(s6)

TypeError: unhashable type: 'list'

s1 = {1,2,3}
s2 = {3,2,1}

print(s1 == s2)

True

Accessing Items
s1 = {1,2,3,4}
s1[0:3]

----------------------------------------------------------------------
-----
TypeError Traceback (most recent call
last)
<ipython-input-75-4c49b6b6050d> in <module>
1 s1 = {1,2,3,4}
----> 2 s1[0:3]

TypeError: 'set' object is not subscriptable

Editing Items
s1 = {1,2,3,4}
s1[0] = 100

----------------------------------------------------------------------
-----
TypeError Traceback (most recent call
last)
<ipython-input-76-bd617ce25076> in <module>
1 s1 = {1,2,3,4}
----> 2 s1[0] = 100

TypeError: 'set' object does not support item assignment


Adding Items
S = {1,2,3,4}
# add
# S.add(5)
# print(S)
# update
S.update([5,6,7])
print(S)

{1, 2, 3, 4, 5, 6, 7}

Deleting Items
# del
s = {1,2,3,4,5}
# print(s)
# del s[0]
# print(s)
# discard
# s.discard(50)
# print(s)
# remove
# s.remove(50)
# print(s)
# pop
# s.pop()
# clear
s.clear()
print(s)

set()

Set Operation
s1 = {1,2,3,4,5}
s2 = {4,5,6,7,8}
s1 | s2
# Union(|)
# Intersection(&)
s1 & s2
# Difference(-)
s1 - s2
s2 - s1
# Symmetric Difference(^)
s1 ^ s2
# Membership Test
1 not in s1
# Iteration
for i in s1:
print(i)

1
2
3
4
5

Set Functions
# len/sum/min/max/sorted
s = {3,1,4,5,2,7}
len(s)
sum(s)
min(s)
max(s)
sorted(s,reverse=True)

[7, 5, 4, 3, 2, 1]

# union/update
s1 = {1,2,3,4,5}
s2 = {4,5,6,7,8}

# s1 | s2
s1.union(s1)

s1.update(s2)
print(s1)
print(s2)

{1, 2, 3, 4, 5, 6, 7, 8}
{4, 5, 6, 7, 8}

# intersection/intersection_update
s1 = {1,2,3,4,5}
s2 = {4,5,6,7,8}

s1.intersection(s2)

s1.intersection_update(s2)
print(s1)
print(s2)

{4, 5}
{4, 5, 6, 7, 8}

# difference/difference_update
s1 = {1,2,3,4,5}
s2 = {4,5,6,7,8}
s1.difference(s2)

s1.difference_update(s2)
print(s1)
print(s2)

{1, 2, 3}
{4, 5, 6, 7, 8}

# symmetric_difference/symmetric_difference_update
s1 = {1,2,3,4,5}
s2 = {4,5,6,7,8}

s1.symmetric_difference(s2)

s1.symmetric_difference_update(s2)
print(s1)
print(s2)

{1, 2, 3, 6, 7, 8}
{4, 5, 6, 7, 8}

# isdisjoint/issubset/issuperset
s1 = {1,2,3,4}
s2 = {7,8,5,6}

s1.isdisjoint(s2)

True

s1 = {1,2,3,4,5}
s2 = {3,4,5}

s1.issuperset(s2)

True

# copy
s1 = {1,2,3}
s2 = s1.copy()

print(s1)
print(s2)

{1, 2, 3}
{1, 2, 3}

Frozenset
Frozen set is just an immutable version of a Python set object
# create frozenset
fs1 = frozenset([1,2,3])
fs2 = frozenset([3,4,5])

fs1 | fs2

frozenset({1, 2, 3, 4, 5})

# what works and what does not


# works -> all read functions
# does't work -> write operations

# When to use
# 2D sets
fs = frozenset([1,2,frozenset([3,4])])
fs

frozenset({1, 2, frozenset({3, 4})})

Set Comprehension
# examples

{i**2 for i in range(1,11) if i>5}

{36, 49, 64, 81, 100}

Dictionary
Dictionary in Python is a collection of keys values, used to store data values like a map, which,
unlike other data types which hold only a single value as an element.

In some languages it is known as map or assosiative arrays.

dict = { 'name' : 'nitish' , 'age' : 33 , 'gender' : 'male' }

Characterstics:

• Mutable
• Indexing has no meaning
• keys can't be duplicated
• keys can't be mutable items

Create Dictionary
# empty dictionary
d = {}
d
# 1D dictionary
d1 = { 'name' : 'nitish' ,'gender' : 'male' }
d1
# with mixed keys
d2 = {(1,2,3):1,'hello':'world'}
d2
# 2D dictionary -> JSON
s = {
'name':'nitish',
'college':'bit',
'sem':4,
'subjects':{
'dsa':50,
'maths':67,
'english':34
}
}
s
# using sequence and dict function
d4 = dict([('name','nitish'),('age',32),(3,3)])
d4
# duplicate keys
d5 = {'name':'nitish','name':'rahul'}
d5
# mutable items as keys
d6 = {'name':'nitish',(1,2,3):2}
print(d6)

{'name': 'nitish', (1, 2, 3): 2}

Accessing items
my_dict = {'name': 'Jack', 'age': 26}
# []
my_dict['age']
# get
my_dict.get('age')

s['subjects']['maths']

67

Adding key-value pair


d4['gender'] = 'male'
d4
d4['weight'] = 72
d4
s['subjects']['ds'] = 75
s

{'name': 'nitish',
'college': 'bit',
'sem': 4,
'subjects': {'dsa': 50, 'maths': 67, 'english': 34, 'ds': 75}}

Remove key-value pair


d = {'name': 'nitish', 'age': 32, 3: 3, 'gender': 'male', 'weight':
72}
# pop
#d.pop(3)
#print(d)
# popitem
#d.popitem()
# d.popitem()
# print(d)
# del
#del d['name']
#print(d)
# clear
d.clear()
print(d)

del s['subjects']['maths']
s

{}

{'name': 'nitish',
'college': 'bit',
'sem': 4,
'subjects': {'dsa': 50, 'english': 34, 'ds': 75}}

Editing key-value pair


s['subjects']['dsa'] = 80
s

{'name': 'nitish',
'college': 'bit',
'sem': 5,
'subjects': {'dsa': 80, 'english': 34, 'ds': 75}}

Dictionary Operations
• Membership
• Iteration
print(s)

'name' in s

{'name': 'nitish', 'college': 'bit', 'sem': 5, 'subjects': {'dsa': 80,


'english': 34, 'ds': 75}}

True

d = {'name':'nitish','gender':'male','age':33}

for i in d:
print(i,d[i])

name nitish
gender male
age 33

Dictionary Functions
# len/sorted
len(d)
print(d)
sorted(d,reverse=True)
max(d)

{'name': 'nitish', 'gender': 'male', 'age': 33}

{"type":"string"}

# items/keys/values
print(d)

print(d.items())
print(d.keys())
print(d.values())

{'name': 'nitish', 'gender': 'male', 'age': 33}


dict_items([('name', 'nitish'), ('gender', 'male'), ('age', 33)])
dict_keys(['name', 'gender', 'age'])
dict_values(['nitish', 'male', 33])

# update
d1 = {1:2,3:4,4:5}
d2 = {4:7,6:8}

d1.update(d2)
print(d1)

{1: 2, 3: 4, 4: 7, 6: 8}
Dictionary Comprehension

# print 1st 10 numbers and their squares


{i:i**2 for i in range(1,11)}

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}

distances = {'delhi':1000,'mumbai':2000,'bangalore':3000}
print(distances.items())

dict_items([('delhi', 1000), ('mumbai', 2000), ('bangalore', 3000)])

# using existing dict


distances = {'delhi':1000,'mumbai':2000,'bangalore':3000}
{key:value*0.62 for (key,value) in distances.items()}

{'delhi': 620.0, 'mumbai': 1240.0, 'bangalore': 1860.0}

# using zip
days = ["Sunday",
"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
temp_C = [30.5,32.6,31.8,33.4,29.8,30.2,29.9]

{i:j for (i,j) in zip(days,temp_C)}

{'Sunday': 30.5,
'Monday': 32.6,
'Tuesday': 31.8,
'Wednesday': 33.4,
'Thursday': 29.8,
'Friday': 30.2,
'Saturday': 29.9}

# using if condition
products = {'phone':10,'laptop':0,'charger':32,'tablet':0}

{key:value for (key,value) in products.items() if value>0}

{'phone': 10, 'charger': 32}

# Nested Comprehension
# print tables of number from 2 to 4
{i:{j:i*j for j in range(1,11)} for i in range(2,5)}

{2: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18, 10:


20},
3: {1: 3, 2: 6, 3: 9, 4: 12, 5: 15, 6: 18, 7: 21, 8: 24, 9: 27, 10:
30},
4: {1: 4, 2: 8, 3: 12, 4: 16, 5: 20, 6: 24, 7: 28, 8: 32, 9: 36, 10:
40}}

{
2:{1:2,2:4,3:6,4:8},
3:{1:3,2:6,3:9,4:12},
4:{1:4,2:8,3:12,4:16}
}

You might also like