Ich bin neu bei Python und ich liebe es, aber ich frage mich, ob es eine bessere Möglichkeit gibt, ein paar Listenmanipulationen zu machen.Gibt es eine bessere Möglichkeit, solche Listen zu erstellen?
Dieser ist relativ gesund, aber es scheint, als ob ich eine eingebaute Funktion verpasst haben könnte.
def zip_plus(source_list, additional_list):
"""
Like zip but does plus operation where zip makes a tuple
>>> a = []
>>> zip_plus(a, [[1, 2], [3, 4]])
>>> a
[[1, 2], [3, 4]]
>>> zip_plus(a, [[11, 12], [13, 14]])
>>> a
[[1, 2, 11, 12], [3, 4, 13, 14]]
"""
if source_list:
for i, v in enumerate(additional_list):
source_list[i] += v
else:
source_list.extend(additional_list)
Dieser ist Hacky und schwer zu lesen, alle Ideen auf tut es saubere oder mehr pythonic?
def zip_join2(source_list, additional_list):
"""
Pretty gross and specialized function to combine 2 types of lists of things,
specifically a list of tuples of something, list
of which the something is left untouched
>>> a = []
>>> zip_join2(a, [(5, [1, 2]), (6, [3, 4])])
>>> a
[(5, [1, 2]), (6, [3, 4])]
>>> zip_join2(a, [(5, [11, 12]), (6, [13, 14])])
>>> a
[(5, [1, 2, 11, 12]), (6, [3, 4, 13, 14])]
"""
if source_list:
for i, v in enumerate(additional_list):
source_list[i] = (source_list[i][0], source_list[i][1] + v[1])
else:
source_list.extend(additional_list)
Ich mag das (a oder []) + (b oder []) Idiom auch, und werde es wahrscheinlich auch in meinem Algorithmus verwenden, danke, dass du dir die Zeit genommen hast. –
@Scott B, gern geschehen. Ich liebe diese Art von Problemen und die Lösungen, die Menschen bieten. Ich nehme jeden Tag etwas von SO weg. Ihre Verwendung von "Doctest" -Stil Docstrings hat mich dazu inspiriert, "Doctest" mehr und nicht nur "Pytest/Unittest" zu verwenden. :-) – kevpie