也许你可以使用while循环:
from typing import Optional, NamedTuple
class Element(NamedTuple):
value: float
name: str
profession: Optional[str] = None
def main() -> None:
arr = [
1150.1, 'James',
3323.1, 'Steve',
9323.1, 'John',
1233.1, 'Gary', 'criminal',
3293.1, 'Josh',
9232.1, 'Daniel', 'criminal',
]
parsed_elements = []
i = 0
while i <= len(arr) - 2:
if isinstance(arr[i + 2], str):
parsed_elements.append(Element(*arr[i:i + 3]))
i += 3
else:
parsed_elements.append(Element(*arr[i:i + 2]))
i += 2
print('\n'.join(str(e) for e in parsed_elements))
if __name__ == '__main__':
main()
输出:
Element(value=1150.1, name='James', profession=None)
Element(value=3323.1, name='Steve', profession=None)
Element(value=9323.1, name='John', profession=None)
Element(value=1233.1, name='Gary', profession='criminal')
Element(value=3293.1, name='Josh', profession=None)
Element(value=9232.1, name='Daniel', profession='criminal')