Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Array multidimensionali da C a Python

Linguaggi e sistemi

Moderatori: Foto UtenteMassimoB, Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] Array multidimensionali da C a Python

Messaggioda Foto UtenteFrenzi » 4 feb 2021, 10:17

Ciao ragazzi, avrei bisogno un consiglio: sto "migrando" un progetto da arduino a raspberry (per mancanza di "potenza" dell'arduino), e purtroppo gran parte delle librerie che mi servono sul raspberry sono in python. Io ho sempre programmato in c, e non ho avuto problemi ad imparare le basi del python, ma ci sono alcune cose che proprio non mi piacciono (tipo il dover usare l'indentazione al posto delle parentesi).
Comunque per forza di cose devo riscrivere il programma in python, ma ho una domanda sulle strutture dati: sicuramente ho io qualche "buco" sulle strutture dati in python, però mi è sembrato di capire che gli array multidimensionali non sono "concessi" (o meglio lo sono ma vanno dichiarati in un modo particolare). Il mio programma in C ha una struttura dati leggibile in modo molto semplice con cicli for annidati (uno per ogni ulteriore dimensione dell'array) mediante indici interi, che trovo sinceramente un sistema molto comodo e snello per scorrere all'interno delle strutture. In python ho cercato di riprodurlo con delle classi, ma lo "scorrimento" è molto più macchinoso e il codice è più framentato e meno leggibile. Come posso creare delle strutture "snelle" anche in python? (Esempio di quello con cui mi trovo comodo in c: matrice a 4 dimensioni di interi: int matrix[2][4][5][25] ; in python non riesco a replicarlo).
Grazie a tutti :-)
Avatar utente
Foto UtenteFrenzi
100 4
New entry
New entry
 
Messaggi: 80
Iscritto il: 4 giu 2015, 11:52

2
voti

[2] Re: Array multidimensionali da C a Python

Messaggioda Foto UtenteEnChamade » 4 feb 2021, 11:29

Ciao,
se ho capito bene in problema, in Python devi usare la libreria numPy per fare quello che vuoi tu. In particolare, quello che serve a te è questo.
Avatar utente
Foto UtenteEnChamade
6.338 2 8 12
G.Master EY
G.Master EY
 
Messaggi: 570
Iscritto il: 18 giu 2009, 12:00
Località: Padova - Feltre

0
voti

[3] Re: Array multidimensionali da C a Python

Messaggioda Foto UtenteFrenzi » 4 feb 2021, 12:23

Grazie mille, proprio quello che cercavo! :ok:
Avatar utente
Foto UtenteFrenzi
100 4
New entry
New entry
 
Messaggi: 80
Iscritto il: 4 giu 2015, 11:52

0
voti

[4] Re: Array multidimensionali da C a Python

Messaggioda Foto Utentelucaking » 4 feb 2021, 12:45

Frenzi ha scritto:...ho sempre programmato in c, e non ho avuto problemi ad imparare le basi del python, ma ci sono alcune cose che proprio non mi piacciono (tipo il dover usare l'indentazione al posto delle parentesi).

Scusa ma penso che questo sia il problema minore, anche perché una buona indentazione a mio avviso è utile anche nel C, se non addirittura indispensabile quando il codice comincia a complicarsi.
Avatar utente
Foto Utentelucaking
1.208 3 5 8
Expert
Expert
 
Messaggi: 1081
Iscritto il: 29 mag 2015, 14:28

0
voti

[5] Re: Array multidimensionali da C a Python

Messaggioda Foto UtenteFrenzi » 4 feb 2021, 14:23

Assolutamente, però le parentesi danno un riferimento inequivocabile mentre con l'indentazione se per caso ti sbagli e cancelli un tab ti cambia tutto il funzionamento del programma
Avatar utente
Foto UtenteFrenzi
100 4
New entry
New entry
 
Messaggi: 80
Iscritto il: 4 giu 2015, 11:52

0
voti

[6] Re: Array multidimensionali da C a Python

Messaggioda Foto Utentexyz » 4 feb 2021, 17:40

Usare un buon editor permette di accorgersi subito di eventuali cattive indentazione nel codice Python.

Un array multidimensionale si può benissimo fare direttamente in Python annidando due liste, basta conoscere bene la sintassi del Python:

Codice: Seleziona tutto
[[x+y for x in range(10)] for y in range(10, 20)]


Puoi usare anche NumPy come è stato già detto.

Nel Python ufficiale esiste il modulo CType il quale permette di accedere direttamente a programmi e strutture dati del C/C++:

https://docs.python.org/3/library/ctypes.html

quindi puoi scrivere librerie dinamiche in C/C+= e accedere dal Python.

Da programmatore C++ posso dire che gli iteratori presenti anche in Python sono più veloci rispetto all'uso degli indici numerici, in generale.
Avatar utente
Foto Utentexyz
6.380 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1683
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[7] Re: Array multidimensionali da C a Python

Messaggioda Foto UtenteFrenzi » 4 feb 2021, 18:00

Ok, grazie. Purtroppo sono ancora a digiuno di python.. ho iniziato a lavorarci qualche settimana fa e sto ancora "ingranando". In teoria posso aggiungerci n dimensioni utilizzando lo stesso "pattern", ad esempio:[ [x+y+z for x in range(10)] for y in range(32)] for z in range(50)](Matrice 10x32x50) , corretto? Sapresti linkarmi una reference su questo argomento?
Avatar utente
Foto UtenteFrenzi
100 4
New entry
New entry
 
Messaggi: 80
Iscritto il: 4 giu 2015, 11:52

0
voti

[8] Re: Array multidimensionali da C a Python

Messaggioda Foto Utentexyz » 4 feb 2021, 18:12

Frenzi ha scritto:... ad esempio:[ [x+y+z for x in range(10)] for y in range(32)] for z in range(50)](Matrice 10x32x50) , corretto? ...

Le parantesi non sono bilanciate ma è corretto.

Python è open source quindi si può capire come funziona dai suoi sorgenti o leggere direttamente la documentazione ufficiale:

https://docs.python.org/3.9/tutorial/da ... rehensions
Avatar utente
Foto Utentexyz
6.380 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1683
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[9] Re: Array multidimensionali da C a Python

Messaggioda Foto UtenteFrenzi » 4 feb 2021, 19:37

Si scusami ho dimenticato una quadra all'inizio. Perfetto grazie ancora :ok:
Avatar utente
Foto UtenteFrenzi
100 4
New entry
New entry
 
Messaggi: 80
Iscritto il: 4 giu 2015, 11:52


Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti