Practice III

login to https://traininghub.vikrant.dev and create a notebook of name students-practice3.ipynb

List comprehensions

nums = [1, 3, 4, 5, 3, 7, 9]
sqrs = []
for n in nums:
    sqrs.append(n*n)
print(sqrs)
[1, 9, 16, 25, 9, 49, 81]
[n*n for n in nums]
[1, 9, 16, 25, 9, 49, 81]
[n**3 for n in nums]
[1, 27, 64, 125, 27, 343, 729]
[n for n in nums]
[1, 3, 4, 5, 3, 7, 9]
sqrs = [n*n for n in nums]
sqrs
[1, 9, 16, 25, 9, 49, 81]
def f(x):
    return x**2 + 2*x + 1
polyvalues = [f(n) for n in nums]
polyvalues
[4, 16, 25, 36, 16, 64, 100]
sqrs = []
for n in nums:
    if n%2 == 0:
        sqrs.append(n*n)
print(sqrs)
[16]
nums
[1, 3, 4, 5, 3, 7, 9]
[n*n for n in nums if n%2==0]
[16]

problem Use list comprehension to solve problems given below

  • Write a function findlens which finds lengths of every word from a given list of words.
  >>> findlens(["one", "two", "three"])
    [3, 3, 5]
  • Write a function find_words_of_len to find words of given length from given list.::
    >>> find_words_of_len(words, 3)
    ['one', 'two', 'six']
  • Write a function odds to find odd numbers less than or equal to n
>>> odds(10)
[1, 3, 5, 7, 9]
x, y = 10, 20
x == y
False
y%x
0
20%10
0
y%x == 0
True
6 % 2
0
6 % 2 == 0
True
6 / 2
3.0
6 % 2 # % is opearator for finding remainder
0
def find_words_of_len(words):
    w = []
    for word in words:
        if len(word) == 3:
            w.append(w)
        print("x")
    print("y")

print("z")
def findlen(words):
    lens=[]
    for w in words:
        lens.append(len(w))
    return lens
 
def findlens(words): 
    return [len(w) for w in words]    
len(nums)
7
len("text")
4
words = "one two three four five six seven".split()
words
['one', 'two', 'three', 'four', 'five', 'six', 'seven']
findlens(words)
[3, 3, 5, 4, 4, 3, 5]
def f(x):
    return x**2 + 2*x +1
def add(x, 2):
    return x+2
  Cell In[37], line 1
    def add(x, 2):
               ^
SyntaxError: invalid syntax
def add(x, y):
    return x+y
[n for n in nums]
[1, 3, 4, 5, 3, 7, 9]
[2*n for n in nums]
[2, 6, 8, 10, 6, 14, 18]
words
['one', 'two', 'three', 'four', 'five', 'six', 'seven']
[w for w in words]
['one', 'two', 'three', 'four', 'five', 'six', 'seven']
[w.upper() for w in words]
['ONE', 'TWO', 'THREE', 'FOUR', 'FIVE', 'SIX', 'SEVEN']
[len(w) for w in words]
[3, 3, 5, 4, 4, 3, 5]
[len(w) for w in words if len(w) == 3]
[3, 3, 3]
[w for w in words if len(w) == 3]
['one', 'two', 'six']
range(1, x+1) # x = 10
range(1, 11)
def odds(x):
    return [n for n in range(1, x) if n%2 ==1]
odds(20)
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

Example

indexdata = [('IBM', 'Monday', 111.71436961893693),
            ('IBM', 'Tuesday', 141.21220022208635),
            ('IBM', 'Wednesday', 112.40571010053796),
            ('IBM', 'Thursday', 137.54133351926248),
            ('IBM', 'Friday', 140.25154281801224),
            ('MICROSOFT', 'Monday', 235.0403622499107),
            ('MICROSOFT', 'Tuesday', 225.0206535036475),
            ('MICROSOFT', 'Wednesday', 216.10342426936444),
            ('MICROSOFT', 'Thursday', 200.38038844494193),
            ('MICROSOFT', 'Friday', 235.80850482793264),
            ('APPLE', 'Monday', 321.49182055844256),
            ('APPLE', 'Tuesday', 340.63612771662815),
            ('APPLE', 'Wednesday', 303.9065277507285),
            ('APPLE', 'Thursday', 338.1350605764038),
            ('APPLE', 'Friday', 318.3912296144338)]
nums
[1, 3, 4, 5, 3, 7, 9]
nums[0] = -1
nums
[-1, 3, 4, 5, 3, 7, 9]
numt = (1, 2, 3, 45)
numt[-1] = 5
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[56], line 1
----> 1 numt[-1] = 5

TypeError: 'tuple' object does not support item assignment
indexdata
[('IBM', 'Monday', 111.71436961893693),
 ('IBM', 'Tuesday', 141.21220022208635),
 ('IBM', 'Wednesday', 112.40571010053796),
 ('IBM', 'Thursday', 137.54133351926248),
 ('IBM', 'Friday', 140.25154281801224),
 ('MICROSOFT', 'Monday', 235.0403622499107),
 ('MICROSOFT', 'Tuesday', 225.0206535036475),
 ('MICROSOFT', 'Wednesday', 216.10342426936444),
 ('MICROSOFT', 'Thursday', 200.38038844494193),
 ('MICROSOFT', 'Friday', 235.80850482793264),
 ('APPLE', 'Monday', 321.49182055844256),
 ('APPLE', 'Tuesday', 340.63612771662815),
 ('APPLE', 'Wednesday', 303.9065277507285),
 ('APPLE', 'Thursday', 338.1350605764038),
 ('APPLE', 'Friday', 318.3912296144338)]
indexdata[0]
('IBM', 'Monday', 111.71436961893693)
indexdata[1]
('IBM', 'Tuesday', 141.21220022208635)
indexdata[-1]
('APPLE', 'Friday', 318.3912296144338)
t = ('IBM', 'Monday', 111.71436961893693)
t[0]
'IBM'
t[1]
'Monday'
t[2]
111.71436961893693
indexdata[0][0]
'IBM'
for i, n in enumerate(nums):
    print(i, n)
0 -1
1 3
2 4
3 5
4 3
5 7
6 9
for item in indexdata:
    print(item)
('IBM', 'Monday', 111.71436961893693)
('IBM', 'Tuesday', 141.21220022208635)
('IBM', 'Wednesday', 112.40571010053796)
('IBM', 'Thursday', 137.54133351926248)
('IBM', 'Friday', 140.25154281801224)
('MICROSOFT', 'Monday', 235.0403622499107)
('MICROSOFT', 'Tuesday', 225.0206535036475)
('MICROSOFT', 'Wednesday', 216.10342426936444)
('MICROSOFT', 'Thursday', 200.38038844494193)
('MICROSOFT', 'Friday', 235.80850482793264)
('APPLE', 'Monday', 321.49182055844256)
('APPLE', 'Tuesday', 340.63612771662815)
('APPLE', 'Wednesday', 303.9065277507285)
('APPLE', 'Thursday', 338.1350605764038)
('APPLE', 'Friday', 318.3912296144338)
for name, day, value in indexdata:
    print(name)
IBM
IBM
IBM
IBM
IBM
MICROSOFT
MICROSOFT
MICROSOFT
MICROSOFT
MICROSOFT
APPLE
APPLE
APPLE
APPLE
APPLE
for name, day, value in indexdata:
    print(name, value)
IBM 111.71436961893693
IBM 141.21220022208635
IBM 112.40571010053796
IBM 137.54133351926248
IBM 140.25154281801224
MICROSOFT 235.0403622499107
MICROSOFT 225.0206535036475
MICROSOFT 216.10342426936444
MICROSOFT 200.38038844494193
MICROSOFT 235.80850482793264
APPLE 321.49182055844256
APPLE 340.63612771662815
APPLE 303.9065277507285
APPLE 338.1350605764038
APPLE 318.3912296144338
[ (name, value) for name, day, value in indexdata if day=="Monday"]
[('IBM', 111.71436961893693),
 ('MICROSOFT', 235.0403622499107),
 ('APPLE', 321.49182055844256)]
[value for name, day, value in indexdata if name=="APPLE"]
[321.49182055844256,
 340.63612771662815,
 303.9065277507285,
 338.1350605764038,
 318.3912296144338]
[(day, value) for name, day, value in indexdata if name=="APPLE"]
[('Monday', 321.49182055844256),
 ('Tuesday', 340.63612771662815),
 ('Wednesday', 303.9065277507285),
 ('Thursday', 338.1350605764038),
 ('Friday', 318.3912296144338)]
def extract_values_company(name_):
    return [(day, value) for name, day, value in indexdata if name==name_]
extract_values_company("APPLE")
[('Monday', 321.49182055844256),
 ('Tuesday', 340.63612771662815),
 ('Wednesday', 303.9065277507285),
 ('Thursday', 338.1350605764038),
 ('Friday', 318.3912296144338)]
extract_values_company("IBM")
[('Monday', 111.71436961893693),
 ('Tuesday', 141.21220022208635),
 ('Wednesday', 112.40571010053796),
 ('Thursday', 137.54133351926248),
 ('Friday', 140.25154281801224)]
{day:value for name, day, value in indexdata if name=="APPLE"}
{'Monday': 321.49182055844256,
 'Tuesday': 340.63612771662815,
 'Wednesday': 303.9065277507285,
 'Thursday': 338.1350605764038,
 'Friday': 318.3912296144338}
v = {day:value for name, day, value in indexdata if name=="APPLE"}
v['Monday']
321.49182055844256
def extract_values_for_day(day_):
    return {name:value for name, day, value in indexdata if day==day_}
extract_values_for_day("Monday")
{'IBM': 111.71436961893693,
 'MICROSOFT': 235.0403622499107,
 'APPLE': 321.49182055844256}