0

To get straight to problem, I have following data.

A = [170,170,150]
b = 160
C = [2,2]
xb = [b/(k-1) for k in C]
print(xb)

Output:

[160.0, 160.0]

Now change C list:

A = [170,170,150]
b = 160
C = [2,1]
xb = [b/(k-1) for k in C]
print(xb)

Output:

Error ZeroDivisionError: division by zero

Okay expected not run, now we find a solution to run it.

xb = []
for k in C:
    try:
        xb.append(b/(k-1))
    except ZeroDivisionError:
        xb.append(0)
print(xb)

Output:

[160.0, 0]

My question is how could I write a shorter version of above solution such as first solution?

Pavel.D
  • 561
  • 1
  • 15
  • 41

3 Answers3

1

You can check for the divide-by-zero case inside the list comprehension, like so:

A = [170,170,150]
b = 160
C = [2,1]
xb = [b/(k-1) if k != 1 else 0 for k in C]
print(xb)

Output:

[160.0, 0]
Tom Karzes
  • 22,815
  • 2
  • 22
  • 41
1

solution on your one of examples

A = [170,170,150]
b = 160
C = [2,1]
xb = [b/(k-1) if k!=1 else 0 for k in C]
print(xb)
sahasrara62
  • 10,069
  • 3
  • 29
  • 44
1
A = [170,170,150]
b = 160
C = [2,1]
xb = [b/(k-1) if k != 1 else 0 for k in C]
print(xb)
nick nick
  • 129
  • 3