Estratto del documento

STRING TO LIST

import re
def string2listdict(s):
    lista = []
    stud = s.split("\n")
    for elem in stud:
        esami = dict()
        for x in re.finditer("(\w+)=(\d+)", elem):
            if (x.group(1)!= "student"):
                esami[x.group(1)] = x.group(2)
        lista.append(esami)
    return lista

s = "student=1, pds=20, dm=30\nstudent=2, log=28, pds=30"
print(string2listdict(s))

Insiemi

A sequence of integer sets is a list , where and, for ,is a set of integers. Given two sequences of integer sets and , we say that is a subsequence of if:

Write a Python function subseq(S, T) that returns True iff S is a subsequence of T

def SubSeq(S,T):
    i=0
    for elem in S:
        while(i<len(T) and not elem.issubset(T[i])):
            i+=1
        if i==len(T):
            return False
        i+=1
    return True

S=[{1,2},{3},{2,3}]
T=[{1,2,3},{1,2,3},{1},{1,3},{2},{2,4},{2,3}]
SubSeq(S,T)

#OPPURE

def SubSeq(S,T):
    x=0
    for i in range(len(S)):
        for j in range(x,len(T)):
        

10S=[{1,2},{3},{2,3}]
T=[{1,2,3},{1,2,3},{1},{1,3},{2},{2,4},{2,3}]
Z=[{2},{1,2,3},{1},{1,3},{2},{2,4}]

SubSeq(S,Z)

POWERSET() trova l'insieme delle parti di un insieme (tutti i suoi sottoinsiemi)

def powerSet(S):
    a = list(S)
    n = len(S)
    res = set()
    for i in range(2**n):
        pow2 = 1
        subset = set()
        for k in range(n):
            if i & pow2 != 0: # (i//pow2)%2==1
                subset.add(a[k])
            pow2 *= 2
        res.add(frozenset(subset))
    return res

S = {1,2,3}
print(powerSet(S))

# OPPURE con INSIEMI

def subsets(S):
    l = len(S)
    if l == 0:
        return {frozenset()} # non-modifiable empty-set
    elem = S.pop()
    PS = subsets(S)
    result = PS | {A | {elem} for A in PS} #bitwise or sta per unione o +
    return result

# OPPURE CON LISTE

def powerSet(s):
    if s==[]:
        return [s]
    else:
        e = s[0]
        t = s[1:]
        pt = powerSet(t)
        fept = [x + [e] for x in pt]
        return pt + fept

ESAME 15/01 powerset e classe

Fai una classe che prende un insieme in input e restituisce il powerset di quell'insieme

from random import randint

class PowerS():
    def
__init__(self):
    self.S = set()
    n = randint(1, 10)
    while(len(self.S) < n):
        self.S.add(randint(-50, 50))

def PowerSet(self):
    a = list(self.S)
    n = len(self.S)
    res = set()
    for i in range(2**n):
        pow2 = 1
        subset = set()
        for k in range(n):
            if i & pow2 != 0:
                subset.add(a[k])
            pow2 *= 2
        res.add(frozenset(subset))
    return res

def __repr__(self):
    return "{}".format(self.S)

PS = PowerS()
print(PS.PowerSet())
print(PS)

MAXIMAL PAIR (ricorsione, bitwise operator)
A pair (x, y) of natural numbers is maximal in a given set of pairs setpairs if it is not dominated by any other pair (w, z) in the set, i.e., it does not hold that: w >= x and z >= y and at least one of the inequalities is strict. Develop a recursive Python function:
- maximalpairs(setpairs) that returns the set of all maximal pairs in setpairs. For instance:
- maximalpairs({ (1, 0), (0, 3), (1, 2) }) shall return {(1, 2), (0, 3)}
- maximalpairs({ (1, 4), (0, 3), (1, 2) }) shall return {(1, 4)}

def
```html maximalpairs(setpairs): # base case: empty set if len(setpairs)==0: return set() # pop a pair(x, y) = setpairs.pop() # recursive call on rest of the set maxpairs = maximalpairs(setpairs) # pairs in maxpairs dominated by (x, y) dominated = set() # scan all elements of maxpairs for (w, z) in maxpairs: # (x, y) domainated by (w, z) if x <= w and y <= z and (x < w or y < z): # (x, y) is not maximal, return maxpairs # dominated is necessary empty: prove it by induction! return maxpairs # (w, z) dominated by (x, y) if w <= x and z <= y and (w < x or z < y): # add (w, z) to the dominated pairs dominated.add((w, z)) return (maxpairs-dominated) | {(x,y)} setpairs={(1,2), (0,3), (1,0)} print(maximalpairs(setpairs)) BITWISE OR MAXAND from itertools import combinations def maxand(s,n): seq = combinations( list(s), n ) massimo =0 for subset in seq: bit_and = None for num in subset: if bit_and == None: bit_and = num bit_and = bit_and & num if massimo < ```
bit_and:massimo = bit_andprint(massimo)maxand({2,5,13},1)maxand({2,5,13},2)maxand({2,5,13},3)#oppuredef maxand(S,n):lista=list(S)nuovo=[]for elem in combinations(lista,n):res=0for num in elem:if res==0:res=numelse:res&=numnuovo.append(res)return max(nuovo)maxand({2,5,13},3)TEST 3/04/2019Esercizio 1. usare generalized inclusion-exclusion di tutti i set di LSe considero tre insiemi (quindi con n=3) il principio si manifesterà cosi:def powerSet(s):if s==[]:return [s]else:e = s[0]t = s[1:]pt = powerSet(t)fept = [x + [e] for x in pt]return pt + feptdef intersezione(lista):if not lista:return 0result = set(lista[0])for s in lista[1:]:result &= set(s)return len(result)def incl_excl(lista):for elem in lista:if len(set(elem)) != len(elem):raise ValueErrorfor elem2 in elem:if not isinstance(elem2,int):raise ValueErrorProgramming for Data Science - Python 13subsets=powerSet(lista)res=0for elem in subsets:if len(elem)%2!=0:res+=intersezione(elem)if
len(elem)%2==0:res-=intersezione(elem)return res
lista=[[1,2,3],[7,3,6],[3,4,2]]
incl_excl(lista)
TEST 15/02 ARFFTYPE
def ArffType(lista,n):
    if len(set(lista))<=n:
        return 'enumerated'
    else:
        for elem in lista:
            try:
                float(elem)
            except ValueError:
                return 'string'
        return 'numeric'
print(ArffType(['3','4','1.2','4'],2))
print(ArffType(['3','4','1.2','4'],3))
print(ArffType(['3','hello','1.2','4'],2))
print(ArffType(['3','hello','1.2','4'],4))
Trova tutti gli anagrammi di una parola e inseriscili in una lista
from itertools import permutations
lista=[]
x=input('inserisci stringa:')
string = permutations(x)
for char in set(string):
    lista.append("".join(char))
print(lista)
ES 2 TEST SETTEMBRE
Programming for Data Science - Python 14
def numero_primo(n):
    fattore=2
    primo=1
    while primo and fattore<n:
        if

n%fattore==0:
    primo=0
else:
    fattore+=1

if primo == 0:
    return False
else:
    return True

def risultato_right(lista):
    risultato_rt = 0
    for i in range(len(lista)):
        part = lista[:len(lista)-i]
        part = ''.join(part)
        numero = int(part)
        if numero_primo(numero)!=True:
            return False
        risultato_rt +=1
    return risultato_rt

def risultato_left(lista):
    risultato_lt = 0
    for i in range(len(lista)):
        part = lista[i:]
        part = ''.join(part)
        numero = int(part)
        if numero_primo(numero)!=True:
            return False
        risultato_lt +=1
    return risultato_lt

def truncatable(n):
    n = str(n)
    lista = []
    for elem in n:
        lista.append(elem)
    for x in range(len(lista)):
        if lista[x] == '0':
            return False
    risul1 = risultato_left(lista)
    risul2 = risultato_right(lista)
    if risul1 == len(lista) and risul2 == len(lista):
        return 'both'
    if risul1 == len(lista):
        return 'left'
    if risul2 == len(lista):
        return 'right'

print(truncatable(9137))
print(truncatable(5939))
print(truncatable(137))
print(truncatable(5))
print(truncatable(103))

Programming for Data Science - Python 15
n=input()
while n!='':
    print(n)
    n=input()
Count how often each letter occurs in a string (case-insensitively). Print the
letters with their counts, in order from highest count to lowest count.

Crea una lista in cui inserisci tutte le lettere dell'alfabeto e il loro numero di occorrenze (lista di liste)

def ordina(x):
    return x[1], -ord(x[0])

text = """
Now, it's quite simple to defend yourself against a man armed with a banana. First of all you fo
"""

text=text.lower()
countlist=[]
for i in range(26):
    countlist.append([chr(ord('a')+i),0])

for char in text:
    for i in range(26):
        if char==countlist[i][0]:
            countlist[i][1]+=1

countlist.sort(key=ordina, reverse=True)
countlist
Trova i numeri mancanti in una lista ordinata

#list comprehension
def find_missing(lst):
    return [x for x in range(lst[0], lst[-1]+1) if x not in lst]

#set
def find_missing(lst):
    return sorted(set(range(lst[0]), lst[-1]+1)) - set(lst)
lst = [1, 2, 4, 6, 7, 9, 10]
print(find_missing(lst))

def palindromo(s):
    if len(s) <= 1:
        return True
    if s[0] == s[-1]:
        return palindromo(s[1:-1])
    else:
        return False

print(palindromo("ciao"))

def dispari(lista):
    if len(lista) == 0:
        return []
    if lista[0] % 2 == 1:
        return [lista[0]] + dispari(lista[1:])
    return dispari(lista[1:])

print(dispari([1, 2, 3, 4, 5, 6]))

def fibonacci(n):
    if n == 1 or n == 2:
        return 1
    return (fibonacci(n - 1) + (fibonacci(n - 2)))

print(fibonacci(7))

def somma_liste(lista):
    totale = 0
    for elem in lista:
        if type(elem) == type([]):
            totale = totale + somma_liste(elem)
        else:
            totale = totale + elem
    return totale

lista = [1, 2, [3, 4, 5], [5, 6]]
print(somma_liste(lista))

def sommaric_inversa(lista):
    if len(lista) == 1:
        return lista[0]
    return lista[len(lista) - 1] +
sommaric_inversa(lista[:len(lista)-1])
lista=[10,4,2]
print(sommaric(lista))
#Partendo dal primo elem fino ad arrivare all'utlimo
def sommaric(lista):
    if len(lista) == 1:
        return lista[0]
    else:
        return lista[0] + somma_ric(lista[1:])
print(somma_ric([2, 4, 5, 6, 7]))
MINIMO/MASSIMO RICORSIVO
Programming for Data Science - Python 17
def minimoLista(lista):
    if len(lista) == 1:
        return lista[0]
    minimo = lista[0]
    altri = minimoLista(lista[1:])
    return min(minimo, altri)
def mass
Anteprima
Vedrai una selezione di 8 pagine su 34
Esercizi con soluzioni in python - Programming for Data Science Pag. 1 Esercizi con soluzioni in python - Programming for Data Science Pag. 2
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Esercizi con soluzioni in python - Programming for Data Science Pag. 6
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Esercizi con soluzioni in python - Programming for Data Science Pag. 11
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Esercizi con soluzioni in python - Programming for Data Science Pag. 16
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Esercizi con soluzioni in python - Programming for Data Science Pag. 21
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Esercizi con soluzioni in python - Programming for Data Science Pag. 26
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Esercizi con soluzioni in python - Programming for Data Science Pag. 31
1 su 34
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher macchia17 di informazioni apprese con la frequenza delle lezioni di Programming for data science e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Pisa o del prof Prencipe Giuseppe.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community