Dumb Stupid Question About List and String

MRAB python at mrabarnett.plus.com
Tue Aug 31 15:25:46 EDT 2010


On 31/08/2010 19:57, Alban Nona wrote:
> Hi all,
>
> Im stuck on this problem:
> I have a function which return me a list of string (basically the result
> looks like: ["FN067_098_MEN", FN067_098_JIN", FN067_098_BG"]
> In other hand, I have another list full of that kind of entries:
> ["FN067_098_MEN_Hair_PUZ_v001.0001.exr","FN067_098_JIN_Hair_SPC_v001.0001.exr","FN067_098_MEN_Jin_MVE_v001.0001.exr","FR043_010_GEN_NRM_v001.0001.exr"]
>
> I would like to do something like this:
>
> myFirstList = ["FN067_098_MEN", FN067_098_JIN", FN067_098_BG"]
> mySecondList =
> ["FN067_098_MEN_Hair_PUZ_v001.0001.exr","FN067_098_JIN_Hair_SPC_v001.0001.exr","FN067_098_MEN_Jin_MVE_v001.0001.exr","FR043_010_GEN_NRM_v001.0001.exr"]
>
> for n in myFirstList:
>      if n in mySecondList:
>          mySecondList.remove(n)
>
> In fact, what I want to do it to remove entries with the secondlist
> which content the entries of the first one. But it seems to not work
> like this.
> Someone can help me please ? did I miss something ?
>
Your code is asking whether, for example, "FN067_098_MEN" is in
mySecondList. It isn't. mySecondList contains
"FN067_098_MEN_Hair_PUZ_v001.0001.exr", but that's not the same as
"FN067_098_MEN".

If I understand you correctly, you want to remove entries from
mySecondList which have an entry of myFirstList as a substring.

Here's one solution:

     result_list = []
     for second in mySecondList:
         if not any(first in second for first in myFirstList):
             result_list.append(second)

     mySecondList = result_list



More information about the Python-list mailing list