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
  • 119,623
  • 25
  • 170
  • 301
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
  • 46,825
  • 13
  • 96
  • 126
user2357112
  • 260,549
  • 28
  • 431
  • 505
1

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
  • 46,825
  • 13
  • 96
  • 126