import re,ast
file_list = ['15L-0.3', '16L-0.4_redo', '15L-0', '16L-redo']
rx = re.compile(r'^(\d+)L(?:-(\d+(?:\.\d+)?))?([_-].*)?$')
array = []
for i in file_list:
m = rx.search(i)
if m:
arr = list(m.groups())
arr[0] = int(arr[0]) # This is an int
if arr[1]: # If Group 2 matched, it is either a doat or int float
arr[1] = ast.literal_eval(arr[1]) # Parse the second number as int or float
array.append([x for x in arr if x is not None]) # Remove any None values
print (array)
aW1wb3J0IHJlLGFzdAoKZmlsZV9saXN0ID0gWycxNUwtMC4zJywgJzE2TC0wLjRfcmVkbycsICcxNUwtMCcsICcxNkwtcmVkbyddCnJ4ID0gcmUuY29tcGlsZShyJ14oXGQrKUwoPzotKFxkKyg/OlwuXGQrKT8pKT8oW18tXS4qKT8kJykKYXJyYXkgPSBbXQpmb3IgaSBpbiBmaWxlX2xpc3Q6CiAgICBtID0gcnguc2VhcmNoKGkpCiAgICBpZiBtOgogICAgCWFyciA9IGxpc3QobS5ncm91cHMoKSkKICAgIAlhcnJbMF0gPSBpbnQoYXJyWzBdKSAjIFRoaXMgaXMgYW4gaW50CiAgICAJaWYgYXJyWzFdOiAjIElmIEdyb3VwIDIgbWF0Y2hlZCwgaXQgaXMgZWl0aGVyIGEgZG9hdCBvciBpbnQgZmxvYXQKICAgIAkJYXJyWzFdID0gYXN0LmxpdGVyYWxfZXZhbChhcnJbMV0pICMgUGFyc2UgdGhlIHNlY29uZCBudW1iZXIgYXMgaW50IG9yIGZsb2F0CiAgICAJYXJyYXkuYXBwZW5kKFt4IGZvciB4IGluIGFyciBpZiB4IGlzIG5vdCBOb25lXSkgIyBSZW1vdmUgYW55IE5vbmUgdmFsdWVzCgpwcmludCAoYXJyYXkpCiAgICAJ