1

I have this:

blah = random.randint(int(minmax[0]), int(minmax[1]))

I know this is possible:

minimum, maximum = int(minmax[0]), int(minmax[1])
blah = random.randint(minimum, maximum)

Can I do this second one in a single line using tuple-argument expansion? For example, if minmax was a tuple of integers to begin with, I could do:

blah = random.randint(*minmax)

But I don't have a tuple of ints, I have a tuple of strs. Obviously it's not a big deal one way or the other. I'm just curious.

martineau
  • 112,593
  • 23
  • 157
  • 280
MaxStrange
  • 137
  • 1
  • 10

2 Answers2

4

Yeah, that's doable:

blah = random.randint(*map(int, minmax))

Use map(int, ...) to perform the type conversion.

Moinuddin Quadri
  • 43,657
  • 11
  • 92
  • 117
user2357112
  • 235,058
  • 25
  • 372
  • 444
0

You may use a list comprehension expression to type-cast the elements to int and then unpack the list as:

random.randint(*[int(i) for i in minmax])
#              ^    ^ type-cast minmax elements to `int`
#              ^ unpack the `list`   
Moinuddin Quadri
  • 43,657
  • 11
  • 92
  • 117