V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
sethverlo
V2EX  ›  Python

求问:两个 list 或者是 tuple,找出在 A 且不在 B 中的元素。

  •  
  •   sethverlo · 2012-07-05 23:57:25 +08:00 · 3499 次点击
    这是一个创建于 4557 天前的主题,其中的信息可能已经有所发展或是发生改变。
    求问哪种方法快一点儿。。目前只能想到手工 for 。。

    其实这个 list 或者 tuple 是从 xml 转换过来的。

    直接处理字符串的话结果好像不对⋯⋯

    >>> a = "<name>123</name><name>345</name><name>456</name>"
    >>> b = "<name>123</name><name>333</name>"
    >>> a.split(b)
    ['<name>123</name><name>345</name><name>456</name>']
    >>> b.split(a)
    ['<name>123</name><name>333</name>']

    求问这样的怎么处理比较好⋯⋯
    17 条回复    1970-01-01 08:00:00 +08:00
    lisztli
        1
    lisztli  
       2012-07-06 00:03:47 +08:00   ❤️ 2
    sa, sb = set(a), set(b)
    return list(sa - sb)
    sethverlo
        2
    sethverlo  
    OP
       2012-07-06 00:11:14 +08:00
    @lisztli 不对啊⋯⋯咦你不是饭否 api 的那个维护者么。。。

    >>> a = "<id>123</id><id>345</id><id>456</id>"
    >>> b = "<id>123</id><id>333</id>"
    >>> sa, sb = set(a), set(b)
    >>> list(sa - sb)
    ['5', '4', '6']

    >>> a = ['123', '456', '567']
    >>> b = ['123,', '555']
    >>> sa, sb = set(a), set(b)
    >>> list(sa - sb)
    ['123', '456', '567']
    bcxx
        3
    bcxx  
       2012-07-06 00:18:04 +08:00   ❤️ 1
    @sethverlo 你第二个例子的 b 写错了。 第一个应该先将 string split 掉
    lisztli
        4
    lisztli  
       2012-07-06 00:19:02 +08:00   ❤️ 1
    >>> a = ['123', '456', '567']
    >>> b = ['123,', '555']

    再看一遍代码……
    lisztli
        5
    lisztli  
       2012-07-06 00:22:00 +08:00   ❤️ 1
    @sethverlo

    >>> a = ['123', '456', '567']
    >>> b = ['123,', '555']

    再看一遍代码……

    好汉不提当年勇,何况我是个怂人
    sethverlo
        6
    sethverlo  
    OP
       2012-07-06 00:22:08 +08:00
    @bcxx
    @lisztli

    解决了。谢谢!
    sethverlo
        7
    sethverlo  
    OP
       2012-07-06 00:22:59 +08:00
    @lisztli “当年勇”⋯哎⋯⋯
    lisztli
        8
    lisztli  
       2012-07-06 00:26:25 +08:00
    @sethverlo 我后面说何况了~~
    sethverlo
        9
    sethverlo  
    OP
       2012-07-06 00:27:03 +08:00
    @lisztli 不不。我意思是。饭否。哎。(膜拜巨巨
    fanzeyi
        10
    fanzeyi  
       2012-07-06 00:43:26 +08:00
    a = [1,2,3,4,5]
    b = [5,6,7,8]
    c = [xx for xx in b if xx not in a]
    sethverlo
        11
    sethverlo  
    OP
       2012-07-06 00:45:14 +08:00
    @fanzeyi 我觉得这样慢吧⋯明天试试。今天懒得动又不想睡觉。Orz⋯
    fanzeyi
        12
    fanzeyi  
       2012-07-06 00:47:14 +08:00
    @sethverlo OI 惯性病吧=_= 这速度在一般情况下还是可以接受的我觉得
    sethverlo
        13
    sethverlo  
    OP
       2012-07-06 00:48:59 +08:00
    @fanzeyi 自从 GAE 弄挂了我俩儿子以后我就特别纠结这个事情⋯⋯
    fanzeyi
        14
    fanzeyi  
       2012-07-06 00:49:20 +08:00
    @sethverlo 你还在用GAE啊……
    sethverlo
        15
    sethverlo  
    OP
       2012-07-06 00:51:19 +08:00
    @fanzeyi 先试试呗。不够用了再说⋯我们那个 vps 我一直蛋疼那速度。。。下一个再不换 linode 我就剁 jj 去。。。
    fanzeyi
        16
    fanzeyi  
       2012-07-06 00:53:50 +08:00
    @sethverlo 换吧…… 我马上就要买第三年的 Linode 了……
    ch_linghu
        17
    ch_linghu  
       2012-07-12 10:51:10 +08:00   ❤️ 1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   993 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 21:41 · PVG 05:41 · LAX 13:41 · JFK 16:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.