Как преобразовать объект в итерируемый (список)? - PullRequest
0 голосов
/ 21 мая 2018

Я хочу преобразовать объект в итеративный.

У меня есть выходные данные в формате

>>>result[0]    
<Particle [0.015270307267929021, -0.0009933688866323714, -0.004208897534490854, -0.011275132115610775, 0.0029132053067140572, 0.005608170262839968, 0.0005401367846572976, -0.013393458586919493, 0.0003998091070805884, 0.0002900137732599478]>

Полный код проблемы:

from fstpso import FuzzyPSO 

def example_fitness( particle ):
    return sum(map(lambda x: x**2, particle))

if __name__ == '__main__':

    dims = 10
    FP = FuzzyPSO()
    FP.set_search_space( [[-10, 10]]*dims ) 
    FP.set_fitness(example_fitness) 
    result =  FP.solve_with_fstpso()
    print "Best solution:", result[0]
    print "Whose fitness is:", result[1]

Я хочу использовать результат [0] в качестве списка. Источник

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Согласно вашему комментарию, в котором говорится, что fstpso.pso.Particle, если вы просто вызовете следующее, вы сможете использовать его в качестве итератора без изменения исходного исходного кода.

variable = result[0].X
for i in variable:
    print(i)

Исходный исходный код указывает, что функция __repr__() просто печатает значение self.X, которое представляет собой список.

def __repr__(self):
return "<Particle %s>" % str(self.X)
0 голосов
/ 21 мая 2018

Объект fstpso.pso.Particle выглядит следующим образом:

class Particle(object):

    def __init__(self):
        self.X = []
        self.V = []
        self.B = []
        self.MarkedForRestart = False
        self.CalculatedFitness = sys.float_info.max
        self.FitnessDevStandard = sys.float_info.max
        self.CalculatedBestFitness = sys.float_info.max
        self.SinceLastLocalUpdate = 0

        self.DerivativeFitness = 0
        self.MagnitudeMovement = 0
        self.DistanceFromBest = sys.float_info.max
        self.CognitiveFactor = 2.
        self.SocialFactor = 2.
        self.Inertia = 0.5

        # support for PPSO
        self.MaxSpeedMultiplier = .25
        self.MinSpeedMultiplier = 0

    def __repr__(self):
        return "<Particle %s>" % str(self.X)

    def __str__(self):
        return "\t".join(map(str, self.X))

С https://github.com/aresio/fst-pso/blob/master/fstpso/pso.py

То, что вы хотите получить, можно получить:

result[0].X
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...