Zmiana typu tylko niektórych elementów listy

0

Witajcie.

Mam zagnieżdżoną listę składającą się z list o tej samej ilości elementów.

['Pierwsze wyrażenie,226,24.8,14.1,b.d.,0', 'Drugie wyrażenie,84,0.4,0.1,21,1', 'Trzecie wyrażenie,36,0.6,0.1,8.4,0.3']

Potrzebuję posortować listy podług jednego z indeksów. Wybrałem do tego "sortowanie przez wybieranie". Na tablicach złożonych z liczb o typie float wszystko działa pięknie, jednak tablice które przedstawiłem - ich elementy liczbowe nie są traktowane jako liczby przez co sortowanie odbywa się podług indeksu ale liter alfabetu. Ja natomiast potrzebuję cyfry.

Pytanie: jak zmienić typ elementów liczbowych listy na float?

UPDATE:
Zmieniłem swoje rozwiązanie.
Wpierw użyłem wyrażeń regularnych, w tej samej pętli nadałem typ float (lub 0 dla b.d) i sortowanie działa jak należy.

1

A zamiast wyrażeń nie lepiej użyć type()?

0
nUmer napisał(a):

Mam zagnieżdżoną listę składającą się z list o tej samej ilości elementów.
['Pierwsze wyrażenie,226,24.8,14.1,b.d.,0', 'Drugie wyrażenie,84,0.4,0.1,21,1', 'Trzecie wyrażenie,36,0.6,0.1,8.4,0.3']

Wzorzec na użycie klasy (obiektów klasy) zamiast listy zagnieżdzonej: pola klasy sa nazwane i okreslone co do typu.
https://4programmers.net/Forum/Python/365391-jak_dodac_dane_do_kilku_list_na_raz?p=1884703#id1884703

To że (zwłaszcza w językach dynamcznych / interpretowanych) można użyc listy, nie jest to typowe.
O liście typowo się się myśli jako kontenerze obiektów podobnych co do typu oraz nie nazwanych (dostepnych po indeksie)

Generalnie obowiazuje zasada "oliwa sprawiedliwa", jak się wybierze niewłaściwą strukturę danych, to zawsze jakoś cierpi

Użycie klasy da ci super komfortowe sortowanie po takim polu, jakie w danej chwili chcesz (class Student)
https://docs.python.org/3/howto/sorting.html

4
nUmer napisał(a):

UPDATE:
Zmieniłem swoje rozwiązanie.
Wpierw użyłem wyrażeń regularnych, w tej samej pętli nadałem typ float (lub 0 dla b.d) i sortowanie działa jak należy.

Ja bym użył na każdym elemencie listy głównej split(","), zamiast wyrażeń regularnych.
A żeby wykryć wpisy takie jak "b.d", które trzeba zamienić na 0, tutaj masz rozwiązanie: https://stackoverflow.com/a/20929881

0
nUmer napisał(a):

... przez co sortowanie odbywa się podług indeksu ale liter alfabetu.

przed porównaniem zastąp na float, czyli zamiast a<b dajesz float(a)<float(b)

Tak a propos, czy starożytne słowa pasują do opisu nowoczesnych rzeczy?

1 użytkowników online, w tym zalogowanych: 0, gości: 1