1

I have created a list and selected 80 random elements. My code :

import random
a=list(range(1,100))
b=random.sample(a,80)
print(b)

I got this output

[85, 97, 32, 95, 35, 70, 57, 19, 71, 81, 39, 50, 93, 16, 13, 94, 36, 99, 38, 90, 54, 6, 29, 72, 63, 5, 64, 45, 24, 47, 33, 52, 44, 65, 23, 82, 21, 89, 74, 12, 51, 18, 78, 61, 86, 88, 62, 3, 96, 30, 69, 75, 84, 58, 9, 43, 31, 7, 28, 1, 91, 55, 37, 98, 73, 27, 92, 25, 68, 87, 41, 49, 2, 66, 77, 46, 53, 20, 4, 26]

How can I convert this output to like

1.number=85 2.number=97...80.number=26
Arkistarvh Kltzuonstev
  • 6,824
  • 7
  • 26
  • 56
Ugur Bal
  • 11
  • 2
  • your desired output is invalid syntactically, but consider creating a dictionary, like `dict(enumerate(b, start=1))` – Chris_Rands Jun 06 '19 at 13:37
  • you wat to get such output as one string? i.e. "1.number=... 80.nuber=26"? – pmarcol Jun 06 '19 at 13:40
  • 1
    Welcome to StackOverflow. Please make sure that your question is clear. Just what do you mean that "How can I convert his output to..."? Do you just want to modify the `print` statement to get your desired output, or do you want to modify the data structure of `b`? If the print, do you want that all on line line or each item on a separate line? – Rory Daulton Jun 06 '19 at 13:40
  • 1
    `print(*("{}.number={}".format(i+1, num) for i, num in enumerate(b)))`? – L3viathan Jun 06 '19 at 13:43

4 Answers4

1

There are a few options, but probably the clearest for you is to either print without the newline character or .join the desired sub-strings directly

Using enumerate(my_iterable, 1) will allow you to "pull" values from it which are a tuple of the next value in your first iterable (b in your example), and the index of that value (starting from 1 as the second argument to enumerate)

For [85, 97, 32, ..., you will pull out (85, 1), (97, 2), (32, 3)... which can be used to build your new string!

printing version

# your code
...
for index, value in enumerate(b, 1):  # begin enumeration at 1
    print("{}.number={} ".format(index, value), end="")
print("")  # end with a new line

joining version
Create a new generator expression

" ".join("{}.number={}".format(i,v) for i, v in enumerate(b, 1))

Complete example in interpreter:

>>> b = [85, 97, 32, 95, 35, 70]
>>> print(" ".join("{}.number={}".format(i,v) for i, v in enumerate(b, 1)))
1.number=85 2.number=97 3.number=32 4.number=95 5.number=35 6.number=70
ti7
  • 16,375
  • 6
  • 40
  • 68
0

If you just want to modify the printout without modifying the data structure of b, and if you want each item on its own, line, replace the print statement with these lines:

for item_number, item_value in enumerate(b, 1):
    print(f'{item_number}.number={item_value}')

That uses the f-strings introduced in Python 3.6. Let me know if you need code for an older version of Python or if you want the items printed on one line.

Rory Daulton
  • 21,934
  • 6
  • 42
  • 50
0
my_list=[85, 97, 32, 95, 35, 70, 57, 19, 71, 81, 39, 50, 93, 16, 13, 94, 36, 99, 38, 90, 54, 6, 29, 72, 63, 5, 64, 45, 24, 47, 33, 52, 44, 65, 23, 82, 21, 89, 74, 12, 51, 18, 78, 61, 86, 88, 62, 3, 96, 30, 69, 75, 84, 58, 9, 43, 31, 7, 28, 1, 91, 55, 37, 98, 73, 27, 92, 25, 68, 87, 41, 49, 2, 66, 77, 46, 53, 20, 4, 26]

out = ""
for i in range(len(my_list)):
    out += "{0}.number={1} ".format(i+1,my_list[i])
out = out[:-1] # to remove last space
print(out)

prints

1.number=85 2.number=97 3.number=32 4.number=95 5.number=35 6.number=70 7.number=57 8.number=19 9.number=71 10.number=81 11.number=39 12.number=50 13.number=93 14.number=16 15.number=13 16.number=94 17.number=36 18.number=99 19.number=38 20.number=90 21.number=54 22.number=6 23.number=29 24.number=72 25.number=63 26.number=5 27.number=64 28.number=45 29.number=24 30.number=47 31.number=33 32.number=52 33.number=44 34.number=65 35.number=23 36.number=82 37.number=21 38.number=89 39.number=74 40.number=12 41.number=51 42.number=18 43.number=78 44.number=61 45.number=86 46.number=88 47.number=62 48.number=3 49.number=96 50.number=30 51.number=69 52.number=75 53.number=84 54.number=58 55.number=9 56.number=43 57.number=31 58.number=7 59.number=28 60.number=1 61.number=91 62.number=55 63.number=37 64.number=98 65.number=73 66.number=27 67.number=92 68.number=25 69.number=68 70.number=87 71.number=41 72.number=49 73.number=2 74.number=66 75.number=77 76.number=46 77.number=53 78.number=20 79.number=4 80.number=26
pmarcol
  • 453
  • 2
  • 9
0

You could use a for loop to iterate over the list

import random
a=list(range(1,100))
b=random.sample(a,80)
count = 1
for num in b:
    print(str(count) + '.number=' + str(num))
    count+=1

Online compiler version

John Salzman
  • 500
  • 5
  • 14