我有两个列表,例如:
a = ['hello','world']
b = ['hello','world','im','steve']
Run Code Online (Sandbox Code Playgroud)
如果我想创建一个仅包含两个元素的第三个列表:
c = ['im','steve']
Run Code Online (Sandbox Code Playgroud)
如果元素的顺序很重要,我该怎么做?我知道我可以使用套装,但他们不断抛弃我的清单.我可以使用' '.join(list)它们将它们转换为字符串,但不知道如何以该格式执行此操作.
Aja*_*234 13
您可以连接列表并使用列表理解:
a = ['hello','world']
b = ['hello','world','im','steve']
final_vals = [i for i in a+b if i not in a or i not in b]
Run Code Online (Sandbox Code Playgroud)
输出:
['im', 'steve']
Run Code Online (Sandbox Code Playgroud)
选项1:设定方法(推荐)
集合有一个symmetric_difference方法,专门从其中a或返回元素b.可以使用列表理解来保留顺序以用于连接列表a + b.
comp = set(a).symmetric_difference(b)
[x for x in a + b if x in comp]
# ['im', 'steve']
Run Code Online (Sandbox Code Playgroud)
选项2:pathlib方法
作为参考,另一种区分两个列表的pathlib.Path.relative_to方法可能是使用方法:
import pathlib
p = pathlib.Path(*b)
r = p.relative_to(*a)
list(r.parts)
# ['im', 'steve']
Run Code Online (Sandbox Code Playgroud)
注意:b是较长的列表.此选项的效率可能低于简单列表推导.
将两个列表相加并减去交集部分(如果它显示在新列表中)。顺序被保留。
c = a + b
for v in set(a).intersection(set(b)):
while v in c:
c.remove(v)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2890 次 |
| 最近记录: |