On Wed, Apr 05, 2017 at 12:07:05PM -0700, Fazal Khan wrote: > Hello, > > Heres another newbie python question: How can I loop through some data and > assign different variables with each loop
You don't. That's a bad idea. Instead, you use a sequence (a tuple, or a list), and use an index: TxTableAngle[0] # the first item TxTableAngle[1] # the second item etc. > So this is my original code: > > def BeamInfo(x): > for Bnum in x: > if plan1.IonBeamSequence[Bnum].ScanMode == 'MODULATED': > TxTableAngle = > plan1.IonBeamSequence[Bnum].IonControlPointSequence[0].PatientSupportAngle > print(TxTableAngle) > else: > None Let's say you succeed in doing what you want, and you have a bunch of variables called TxTableAngle_0, TxTableAngle_1, TxTableAngle_2, and so on. How do you use them? The first problem is that you don't know if they even exist! You might not have *any* TxTableAngle variables at all, if x is empty, of if ScanMode is never MODULATED. So even TxTableAngle_0 might fail with a NameError exception. But even if you can guarantee that there is *at least one* variable, you don't know how many there will be! That depends on how many times the ScanMode is MODULATED. Perhaps there is only one, perhaps there is a thousand. How do you know if it is safe to refer to: TxTableAngle_3 or not? This rapidly becomes hard to code, difficult to write, harder to debug and maintain, a real nightmare. Better is to collect the results into a list: def BeamInfo(x): results = [] for bnum in x: beam = plan1.IonBeamSequence[bnum] if beam.ScanMode == 'MODULATED': TxTableAngle = beam.IonControlPointSequence[0].PatientSupportAngle results.append(TxTableAngle) print(TxtTableAngle) return results TxTableAngles = BeamInfo([0,1,2,3,4,5,6]) Now you know that TxTableAngles *must* exist. You can find out how many items there actually are: len(TxTableAngles) you can grab any one specific item (provided the index actually exists): TxTableAngles[i] and most importantly you can process all of the angles one after the other: for angle in TxTableAngles: print(angle) -- Steve _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor