0

I am trying to append multiple items in a single list. here is my code:

for i in amenities_extras:
             amenities_extras = i.text
             print("###amenities_extras: ",amenities_extras) 

the result which I am getting:

###amenities_extras:  Accessible
###amenities_extras:  Bar Tab
###amenities_extras:  Coffee / Tea
###amenities_extras:  Dance Floor
###amenities_extras:  External Music
###amenities_extras:  Filtered Water
###amenities_extras:  Furniture Hire
###amenities_extras:  Inhouse Catering
###amenities_extras:  Microphone
###amenities_extras:  Natural light
###amenities_extras:  Outdoor Space
###amenities_extras:  Parking
###amenities_extras:  Restroom
###amenities_extras:  Security
###amenities_extras:  Speakers
###amenities_extras:  TV
###amenities_extras:  WiFi

here I am trying this code for put all items in a single list:

for i in amenities_extras:
             amenities_extras_list =[] 
             amenities_extras = i.text
             print("###amenities_extras: ",amenities_extras_list.append(amenities_extras))  

I am getting this result:

###amenities_extras:  None
###amenities_extras:  None
###amenities_extras:  None
###amenities_extras:  None............
....................................
..........................................

why it's not appending all items like this ['Accessible','Bar Tab','Dance Floor','WiFi']

boyenec
  • 1,405
  • 5
  • 29
  • 2
    `append` doesn't return anything useful, just None. It modifies the list in place. You probably want to declare that list outside of the loop, otherwise you're making a new list and putting 1 element in it on each iteration, only to overwrite it on the next iteration. `amenities_extras = ...` also overwrites the list that's being looped over. Or just use `[x.text for x in amenities_extras]`. – ggorlen Jul 02 '21 at 04:50
  • 1
    `append` does not return a value. – shree.pat18 Jul 02 '21 at 04:50
  • 1
    You are emptying the list every time through the loop. And since `amenities_extras` already contains the list, what are you really trying to do here? – Tim Roberts Jul 02 '21 at 04:51
  • Thanks all...the problem was my list in inside for loop. – boyenec Jul 02 '21 at 05:17
  • BTW this `amenities_extras = i.text` in beginning of loop is very confusing since you iterate over `amenities_extras` it is not clear what was your intent. It would be better to avoid such variable smashing. – Marek R Sep 14 '22 at 15:48

1 Answers1

3

There are two primarily errors from your code (apart from the bad code choice),

for i in amenities_extras:
             amenities_extras_list =[] # This will make the list back to zero.
             amenities_extras = i.text
             print("###amenities_extras: ",amenities_extras_list.append(amenities_extras))

Perhaps you meant,

amenities_extras_list =[] 
for i in amenities_extras:
             
             amenities_extras = i.text
             print("###amenities_extras: ",amenities_extras_list.append(amenities_extras))

And append does not return value, this is the final code,

amenities_extras_list = [] # Or use list()
for i in amenities_extras:
             amenities_extras = i.text
             amenities_extras_list.append(amenities_extras)
             print("###amenities_extras: ", amenities_extras_list[-1])

(Edited thanks to @juanpa.arrivillaga)

FaranAiki
  • 453
  • 3
  • 12