-----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.k...@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----- -- https://mail.python.org/mailman/listinfo/python-list