1

Say I have a python list with 5 elements; list = ['a','b','c','d','e']. And I want to change it into 5 different strings so that each element is its own string, for example, str1 = a str2 = b str3 = c str4 = d str5 = e How would that be done? Note: I would want it to be done autonomously if possible as the number of elements in a list is variable according to the data that is input at the beginning of the original code.

Sport6000
  • 11
  • 2
  • Why can't you use `str1=mylist[0]`, `str2=mylist[1]`, etc. ? – Aziz Apr 17 '22 at 15:22
  • You may want to do list unpacking: `a, b, c, d, e = ['a','b','c','d','e']` – mara004 Apr 17 '22 at 15:24
  • I'd be curious to know when `str1`, `str2`, etc. is preferable to `s[1]` , `s[2]`. It sounds like you are about to make a mistake you will later regret. If you do this "autonomously", how will you know if you can safely access `str87`? – Mark Apr 17 '22 at 15:28
  • Check [generating variable names on fly in python](https://stackoverflow.com/questions/4010840/generating-variable-names-on-fly-in-python). Maybe just give a more meaningful name to your list (for instance `str` and there you have your variables `str[0], str[1]`, etc. – user2314737 Apr 17 '22 at 15:32

1 Answers1

-1
list_ = ['a','b','c','d','e']

You can use something called list unpacking, that you can do this way:

a, b, c, d, e = list_

As @Mark told you in the comments...

I'd be curious to know when str1, str2, etc. is preferable to s[1] , s[2]. It sounds like you are about to make a mistake you will later regret.

...you should avoid this approach.


If you don't know the lenght, you should read this, which suggests you to use the * star operator...

first, second, *others, third, fourth = names

...until you have the whole list unpacked.

Since you don't want to write an hell of if/elif/else over the lenght, I would suggest you to use exec to create variables on fly, even if (like Mark said) it's a bad idea.


I really want you to get that this is a bad idea, but you can use unpacking for useful scopes, in this case I would suggest you to read this, this and the respective PEP.

FLAK-ZOSO
  • 3,873
  • 4
  • 8
  • 28