¿Por qué se permiten las comas finales en una lista?
Tengo curiosidad por saber por qué en Python una coma final en una lista es una sintaxis válida, y parece que Python simplemente la ignora:
>>> ['a','b',]
['a', 'b']
Tiene sentido cuando es una tupla ya que ('a')
y ('a',)
son dos cosas diferentes, pero en listas?
5 answers
Las principales ventajas son que hace que las listas multilínea sean más fáciles de editar y que reduce el desorden en las diferencias.
Cambiando:
s = ['manny',
'mo',
'jack',
]
A:
s = ['manny',
'mo',
'jack',
'roger',
]
Implica solo un cambio de una línea en el diff:
s = ['manny',
'mo',
'jack',
+ 'roger',
]
Esto supera al diff multilínea más confuso cuando se omitió la coma final:
s = ['manny',
'mo',
- 'jack'
+ 'jack',
+ 'roger'
]
Esta última diferencia hace que sea más difícil ver que solo se agregó una línea y que la otra línea no cambió el contenido.
También reduce el riesgo de haciendo esto:
s = ['manny',
'mo',
'jack'
'roger' # Added this line, but forgot to add a comma on the previous line
]
Y desencadenando la concatenación literal de cadena implícita, produciendo s = ['manny', 'mo', 'jackroger']
en lugar del resultado deseado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-27 00:35:37
Es una convención sintáctica común permitir comas finales en una matriz, lenguajes como C y Java lo permiten, y Python parece haber adoptado esta convención para su estructura de datos de listas. Es particularmente útil cuando se genera código para rellenar una lista: basta con generar una secuencia de elementos y comas, sin necesidad de considerar la última como un caso especial que no debería tener una coma al final.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-30 17:41:37
Ayuda a eliminar un cierto tipo de error. A veces es más claro escribir listas en varias líneas. Pero en, más tarde maintenace es posible que desee reorganizar los elementos.
l1 = [
1,
2,
3,
4,
5
]
# Now you want to rearrange
l1 = [
1,
2,
3,
5
4,
]
# Now you have an error
Pero si permite las comas finales y las usa, puede reorganizar fácilmente las líneas sin introducir un error.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-22 05:18:53
Una tupla es diferente porque ('a')
se expande usando la continuación implícita y ()
s como un operador de precedencia, mientras que ('a',)
se refiere a una tupla de longitud 1.
Su ejemplo original habría sido tuple('a')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-01 19:10:11
La razón principal es hacer diff menos complicado. Por ejemplo, usted tiene una lista :
list = [
'a',
'b',
'c'
]
Y desea agregar otro elemento a ella. Entonces terminarás haciendo esto:
list = [
'a',
'b',
'c',
'd'
]
Por lo tanto, diff mostrará que se han cambiado dos líneas, primero agregando ',' en línea con 'c' y agregando 'd' en la última línea.
Por lo tanto, python permite ',' al final del último elemento de la lista, para evitar diferencias adicionales que pueden causar confusión.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-15 16:59:11