#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Fri Oct 11 11:04:02 2019 @author: andrea """ import random # azzero il seed per generare sempre la stessa successione di valori casuali random.seed(0) # costuisco una lista di 1000 valori casuali estratti a caso tra -1M e 1M L = [] for _ in range(1000): L.append(random.randint(-1000000,1000000)) # ri-azzero il seed per rigenerare gli stessi valori random.seed(0) # costruisco una seconda lista di valori casuali usando la list-comprehension L2 = [ random.randint(-1000000,1000000) for _ in range(1000) ] # le due liste devono essere uguali perchè ho generato gli stessi valori nello stesso ordine if L == L2 : print("L ed L2 sono identiche") # seleziono tutti gli elementi di L2 che sono pari usando la list comprehension pari = [ x for x in L2 if x%2 == 0 ] # per realizzare una matrice usiamo una lista di liste # ciascuna lista interna contiene gli elementi di una riga # la lista esterna contiene le righe tabellina3x3 = [ [ 1, 2, 3], [ 2, 4, 6], [ 3, 6, 9], ] # costruzione di una lista di liste usando due for nidificati tabellina10x10 = [] for riga in range(1,11): # scandisco i valori da 1 a 10 tabellina10x10.append([]) # aggiungo una riga vuota alla matrice for colonna in range(1,11): # scandisco i valori delle colonne da 1 a 10 tabellina10x10[riga-1].append(colonna*riga) # aggiungo alla riga corrente il prodotto # secondo modo per costruire la tabellina tabellina10x10_2 = [] for riga in range(1,11): # scandisco i valori da 1 a 10 nuovariga = [] for colonna in range(1,11): # scandisco i valori delle colonne da 1 a 10 nuovariga.append(colonna*riga) # aggiungo alla riga corrente il prodotto tabellina10x10_2.append(nuovariga) # costruzione della tabella usando la list comprehensione tabellina_bis = [ [ riga*colonna # l'elemento generico è il prodotto for colonna in range(1,11) # scandendo le colonne da 1 a 10 ] # la matrice è una lista di liste for riga in range(1,11) # scandendo le righe da 1 a 10 ] # istogramma di una lista di valori casuali random.seed(100) V = [ random.randint(100,200) for _ in range(1000)] S = set(V) if len(S) == len(V): print("non ci sono doppioni") else: print("ci sono doppioni") # per calcolare la frequenza dei valori in V ovvero il suo conteggio conoscendo il minimo e massimo m e M def frequenza_valori(valori, minimo, massimo): # assumo che tutti i valori siano tra 0 e massimo assert minimo>=0, "il minimo è negativo" # uso una lista di valori interi in modo che alla posizione X ci sia il conteggio di X # inizializzo la lista con valori 0 lista = [0] * (massimo+1) # ripeto per tutti gli elementi x di V for x in valori: # controllo che i valori siano non negativi assert x>=0, f"il valore {x} è negativo" # aggiorno il conteggio dell'elemento a indice x sommandoci 1 lista[x] += 1 # alla fine torno la lista return lista istogramma = frequenza_valori(V, 100, 200) V = [ random.randint(-100,200) for _ in range(1000)] # per calcolare la frequenza dei valori in V ovvero il suo conteggio def istogramma_dict(valori): # uso un dizionario per contenere le coppie valore:conteggio conteggi = {} # scandisco i valori V for x in valori: # aggiorno il dizionario if x in conteggi: conteggi[x] += 1 else: conteggi[x] = 1 # torno il dizionario return conteggi conti = istogramma_dict(V)