On 7/11/19 8:15 AM, Chip Wachob wrote: kinda restating what Oscar said, he came to the same conclusions, I'm just being a lot more wordy:
> So, here's where it gets interesting. And, I'm presuming that someone out > there knows exactly what is going on and can help me get past this hurdle. Well, each snippet has some "magic" variables (from our point of view, since we don't see where they are set up): 1: if(voltage > (avg + triglevel) 2: if((voltage > triggervolts) since the value you're comparing voltage to gates when you decide there's a transition, and thus what gets added to the transition list you're building, and the list size comes out different, and you claim the data are the same, then guess where a process of elimination suggests the difference is coming from? === Stylistic comment, I know this wasn't your question. > for row in range (len(TrigWind)): Don't do this. It's not a coding error giving you wrong results, but it's not efficient and makes for harder to read code. You already have an iterable in TrigWind. You then find the size of the iterable and use that size to generate a range object, which you then iterate over, producing index values which you use to index into the original iterable. Why not skip all that? Just do for row in TrigWind: now row is actually a row, as the variable name suggests, rather than an index you use to go retrieve the row. Further, the "row" entries in TrigWind are lists (or tuples, or some other indexable iterable, we can't tell), which means you end up indexing into two things - into the "array" to get the row, then into the row to get the individual values. It's nicer if you unpack the rows into variables so they can have meaningful names - indeed you already do that with one of them. Lets you avoid code snips like "x[7][1]" Conceptually then, you can take this: for row in range(len(Trigwind)): voltage = float(TrigWind[row][1]) ... edgearray.append([float(TrigWind[row][0]), float(TrigWind[row][1])]) ... and change to this: for row in TrigWind: time, voltage = row # unpack .... edgearray.append([float)time, float(voltage)]) or even more compactly you can unpack directly at the top: for time, voltage in TrigWind: ... edgearray.append([float)time, float(voltage)]) ... Now I left an issue to resolve with conversion - voltage is not converted before its use in the not-shown comparisons. Does it need to be? every usage of the values from the individual rows here uses them immediately after converting them to float. It's usually better not to convert all over the place, and since the creation of TrigWind is under your own control, you should do that at the point the data enters the program - that is as TrigWind is created; then you just consume data from it in its intended form. But if not, just convert voltage before using, as your original code does. You don't then need to convert voltage a second time in the list append statements. for time, voltage in TrigWind: voltage = float(voltage) ... edgearray.append([float)time, voltage]) ... _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor