Flo*_*wen 0 python loops list-comprehension list concatenation
我有两个相同长度的列表,如下所示:
lstA = [[1,4,5,6],[4,5],[5,6],[],[],[],[],[]]
lstB = [[7,8],[4,5],[],[],[],[2,7,8],[7,8],[6,7]]
Run Code Online (Sandbox Code Playgroud)
我想在每个索引位置连接子列表,以便它们创建一个子列表,如下所示:
newlst = [[1,4,5,6,7,8],[4,5],[5,6],[],[],[2,7,8],[7,8],[6,7]]
Run Code Online (Sandbox Code Playgroud)
理想情况下,新的子列表将删除重复项(如newlst [1]中).我将整数转换为字符串,并试图这样做:
for i in range(len(lstA)):
c = [item + item for item in strA[i], strB[i]]
Run Code Online (Sandbox Code Playgroud)
但是在添加到其他列表之前,会将每个列表中的每个项目添加到自身,从而产生如下所示的内容:
failedlst = [[["1","4","5","6","1","4","5","6"],["7","8","7","8"]],[["4","5","4","5"],["4","5","4","5"]]...etc]
Run Code Online (Sandbox Code Playgroud)
这仍然没有实际加入这两个子列表,只是创建了两个子列表的新子列表.任何帮助都会受到很大的限制!
通过并行连接项目来制作列表非常简单,使用列表推导与zip功能相结合.
newlst = [x+y for x,y in zip(lstA, lstB)]
Run Code Online (Sandbox Code Playgroud)
如果要删除重复项,可以使用a set.如果您想在列表中按顺序放回项目,则可以使用sorted.
结合起来,这个:
newlst = [sorted(set(x+y)) for x,y in zip(lstA, lstB)]
Run Code Online (Sandbox Code Playgroud)