Python Style Question
Martin Kemp
martin.kemp at ingg.com
Wed Oct 29 07:25:57 EDT 2014
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 29/10/2014 10:45, Anton wrote:
> Let's say I have an incoming list of values *l*. Every element of
> *l* can be one of the following options: 1) an integer value 2) a
> string in form of '<int_value>', e.g. '7' 3) a string with a json
> serialization of an integer value, e.g. '"7"' 4) something else
> that should be ignored
>
> I need to transform this list into another list with values from
> options 1)-3) coerced to int. The code below should do this.
>
>
> Variant 1 ===
>
> values = [] for c in l: # Case 1) or 2) try: c_int = int(c) except
> ValueError: pass else: values.add(c_int) continue
>
> # Case 3) try: c_int = int(json.loads(c)) except ValueError: pass
> else: values.add(c_int) continue
>
> ===
>
> Is this code ugly? Does it follow EAFP? Am I missing something in
> language best practice?
>
> Or maybe below is more preferable way with a nested try...except
> clause?
>
> Variant 2 === values = [] for c in l: # Case 1) or 2) try: c_int =
> int(c) except ValueError: # Case 3) try: c_int =
> int(json.loads(c)) except ValueError: pass else: values.add(c_int)
> continue else: values.add(c_int) continue ===
>
> Thanks, Anton.
>
>
Your first example is perfectly fine and is EAFP
Personally, I prefer to avoid nesting when it's not necessary.
- --
Martin Kemp (martin.kemp at ingg.com)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQEcBAEBAgAGBQJUUM7zAAoJEJ0Re0UIDzSucugIALn/zY8RdpP8iaMShHoszzqf
I0zl0mFHyqhNtwgQ0ZF7VGO+H+U0Dk8rhzTYOmEMzPTKNBGwll3fda9mOnrK9Xvp
9gQjII6DyQIWH7Z3dLcLr2e1j8OMNUSL6UmAYs8urNSIKZLowdV3JI4G/bLyW0KS
y5Ko8dI6y5nOJ1P9XCmPTmags43UZfR8DrBUaAbzNcS8FGwmUE2KBkEhLQOvmpJi
jmMc7wMOpq0jL+XbA+7pHUqoVZ7w1tUFjuy9I3h45tgPuTFAFB0gX+FpE+oVgO5o
spQpVaOPEYN9ceLgHdKSxzdVIhOQLE6H/SYNHlsEW/ZNM6aR9n4yipgkOmtJ0+M=
=WzHA
-----END PGP SIGNATURE-----
More information about the Python-list
mailing list