'How to delete an element every 8 elements in a list of strings on python?
Suppose that you have a list of strings like the following one:
the_list = ['02:00', ' GBP', '', 'Construction Output (MoM) (Jan)', '1.1%', '0.5%', '2.0%', '',
'02:00', ' GBP', '', 'U.K. Construction Output (YoY) (Jan)', '9.9%', '9.2%', '7.4%', '',
'02:00', ' GBP', '', 'GDP (MoM)', '0.8%', '0.2%', '-0.2%', '',
'02:00', ' GBP', '', 'GDP (YoY)', '10.0%', '9.3%', '6.0%', '',
'02:00', ' GBP', '', 'Index of Services', '1.0%', ' ', '1.2%', '']
Which every 8 elements appears '', which is an empty string, and it happens to be the same empty string that exists next to the one called GBP
How could the_list variable be updated so that it deletes the '' element that appears every 8 elements in the array of strings?
Solution 1:[1]
If I understood you correctly, you can use list-comprehension to filter out the values at specific index:
new_list = [word for idx, word in enumerate(the_list, 1) if idx % 8 != 0]
print(new_list)
Prints:
['02:00', ' GBP', '', 'Construction Output (MoM) (Jan)', '1.1%', '0.5%', '2.0%',
'02:00', ' GBP', '', 'U.K. Construction Output (YoY) (Jan)', '9.9%', '9.2%', '7.4%',
'02:00', ' GBP', '', 'GDP (MoM)', '0.8%', '0.2%', '-0.2%',
'02:00', ' GBP', '', 'GDP (YoY)', '10.0%', '9.3%', '6.0%',
'02:00', ' GBP', '', 'Index of Services', '1.0%', ' ', '1.2%']
Solution 2:[2]
It's pretty simple:
del the_list[::8] # or del the_list[7::8] if you try to delete the 7th element of each line
Solution 3:[3]
just use this code to find the element that you want to delete in that case is empty string, in python is a false string so
for x in the_list:
if not x:
the_list.remove(x)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Andrej Kesely |
| Solution 2 | Jonathan Dauwe |
| Solution 3 | schtalman |
