Python Forum
Replace element in a nested list
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Replace element in a nested list
#1
I’m writing to ask if you could help me with a short Python example. Here’s a list of the list of strings:

my_string = [[89, 111, 117, 32], [104, 97, 118, 101, 32], [109, 97, 100, 101, 32], [109, 121, 32], [115, 111, 117, 108, 46]]

Could you suggest how to implement this into a statement that would enable one to replace all values less than a certain value by None (32, 46 => None), and then subtract the rest of the lists by another value? Something like:

if number < 65: q = None
else q = number - 12

I tried implementing this statement but with no luck:
for i in my_string:
    if i < 65:
        i == None
I imagine it must have to do to something with the fact that I’m using a nested list of strings, which I need to preserve.

Thank you for your time!
Reply
#2
Here is a way
my_string = [[None if y < 65 else y - 12 for y in x] for x in my_string]
Reply
#3
A loop version of Gribouillis's solution, if you are not familiar with list comprehensions:

new_list = []
for sub_list in my_string:
    new_list.append([])
    for item in sub_list:
        if item < 65:
            new_list[-1].append(None)
        else:
            new_list[-1].append(item - 12)
my_string = new_list
They both do the same thing, the list comprehension syntax is just way more compact.
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#4
Thank you! This is very helpful.
Reply
#5
Or, if you'd rather not build a new list, you can use indexes:
>>> my_string = [[89, 111, 117, 32], [104, 97, 118, 101, 32], [109, 97, 100, 101, 32], [109, 121, 32], [115, 111, 117, 108, 46]]
>>> for outer_ndx, out in enumerate(my_string):
...   for inner_ndx, inner in enumerate(out):
...     if inner < 65:
...       my_string[outer_ndx][inner_ndx] = None
...
>>> my_string
[[89, 111, 117, None], [104, 97, 118, 101, None], [109, 97, 100, 101, None], [109, 121, None], [115, 111, 117, 108, None]]
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  element in list detection problem jacksfrustration 5 317 Apr-11-2024, 05:44 PM
Last Post: deanhystad
  list in dicitonary element problem jacksfrustration 3 692 Oct-14-2023, 03:37 PM
Last Post: deanhystad
  Replace string in a nested Dictianory. SpongeB0B 2 1,193 Mar-24-2023, 05:09 PM
Last Post: SpongeB0B
  List all possibilities of a nested-list by flattened lists sparkt 1 915 Feb-23-2023, 02:21 PM
Last Post: sparkt
  Find (each) element from a list in a file tester_V 3 1,205 Nov-15-2022, 08:40 PM
Last Post: tester_V
  Сheck if an element from a list is in another list that contains a namedtuple elnk 8 1,833 Oct-26-2022, 04:03 PM
Last Post: deanhystad
  Membership test for an element in a list that is a dict value for a particular key? Mark17 2 1,209 Jul-01-2022, 10:52 PM
Last Post: Pedroski55
  How to find the second lowest element in the list? Anonymous 3 1,997 May-31-2022, 01:58 PM
Last Post: Larz60+
  check if element is in a list in a dictionary value ambrozote 4 1,963 May-11-2022, 06:05 PM
Last Post: deanhystad
  Updating nested dict list keys tbaror 2 1,275 Feb-09-2022, 09:37 AM
Last Post: tbaror

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020