Например, скажем, у меня есть неопределенное количество наборов, которые я хочу объединить:
bigSet = bigSet.union(<listOfSets>)
Я мог бы просто сложить каждый набор, то есть:
bigSet = reduce(lambda x,y: x.union(y), listOfSets)
Другая альтернативаиспользовать функцию eval:
stringTuple = str(listOfSets)
stringTuple = stringTuple.strip("[")
stringTuple = stringTupl.strip("]")
bigSet = eval("bigSet.union(" + stringTuple + ")")
Причина, по которой я спрашиваю, заключается в том, что в python2.6 передача нескольких аргументов в объединение (а не сведение его через список объединений) оптимизирует объединение так, чтобысамые маленькие наборы сначала объединяются.Поскольку наборы в python часто являются лучшей структурой данных для очень больших наборов данных (особенно когда они должны быть объединены или пересечены), и кажется довольно распространенным, что у вас есть неопределенное количество наборов для передачи, поэтому следуетбыть более оптимальным способом сделать это.Если нет, то что быстрее: использовать eval или сворачивать по сетам?