Home > Net >  Simplifying elif
Simplifying elif

Time:06-07

I've got a bunch of elif functions:

 if 0 <= A.iloc[Row] <= 5:
        B = C.iloc[0,0]
    
    elif 5 <= A.iloc[Row] <= 10:
        B = C.iloc[1,0]
    
    elif 10 <= A.iloc[Row] <= 15:
        B = C.iloc[2,0]
    
    elif 15 <= A.iloc[Row] <= 20:
        B = C.iloc[3,0]
...

Is there a way to simplify my elif functions so they iterate through up to a 95<x<100?

I thought about using a while loop, but I can't seem to figure it out. (I'm only in the very beginner stages of learning Python).

CodePudding user response:

You could use a for loop

for i in range(0, 100, 5):
    if i <= A.iloc[Row] < i   5:
        B = C.iloc[i // 5, 0]

Or math

chunk = A.iloc[Row] // 5
B = C.iloc[chunk, 0]

Note that <= A.iloc[Row] <= is not very correct regarding the logic, should be <= A.iloc[Row] < because a bound shouldn't be in 2 cases

CodePudding user response:

With a while loop it would look like this:

a = 0
while a <= 100:
    if a <= A.iloc[Row] <= a 5:
        B = C.iloc[0,0]
    a  = 5

CodePudding user response:

The logic in the question seems to be flawed due to overlaps.

If we assume that B = C.iloc[0,0] when 0 <= A.iloc[Row] < 5 then all you need is:

B = C.iloc[A.iloc[Row]//5, 0]
  • Related