in [ ]b_list remove('foo'in [ ]b_list out[ ]['red''baz''dwarf''foo'if performance is not concernby using append and removea python list can be used as perfectly suitable "multi-setdata structure you can check if list contains value using the in keywordin [ ]'dwarfin b_list out[ ]true note that checking whether list contains value is lot slower than dicts and sets as python makes linear scan across the values of the listwhereas the others (based on hash tablescan make the check in constant time concatenating and combining lists similar to tuplesadding two lists together with concatenates themin [ ][ none'foo'[ ( )out[ ][ none'foo' ( )if you have list already definedyou can append multiple elements to it using the extend methodin [ ] [ none'foo'in [ ] extend([ ( )]in [ ] out[ ][ none'foo' ( )note that list concatenation is compartively expensive operation since new list must be created and the objects copied over using extend to append elements to an existing listespecially if you are building up large listis usually preferable thuseverything [for chunk in list_of_listseverything extend(chunkis faster than than the concatenative alternative everything [for chunk in list_of_listseverything everything chunk sorting list can be sorted in-place (without creating new objectby calling its sort functionin [ ] [ data structures and sequences www it-ebooks info