红宝石人有雪貂.有人知道Python的任何类似举措吗?我们目前正在使用PyLucene,但我想调查转向纯Python搜索.
如果我有序列序列(可能是元组列表),我可以使用itertools.chain()来展平它.但有时我觉得我宁愿把它写成一种理解.我只是想不出怎么做.这是一个非常具体的案例:
假设我想在序列中交换每对元素.我在这里使用字符串作为序列:
>>> from itertools import chain
>>> seq = '012345'
>>> swapped_pairs = zip(seq[1::2], seq[::2])
>>> swapped_pairs
[('1', '0'), ('3', '2'), ('5', '4')]
>>> "".join(chain(*swapped_pairs))
'103254'
Run Code Online (Sandbox Code Playgroud)
我在序列的偶数和奇数切片上使用zip来交换对.但我最终得到了一个现在需要扁平化的元组列表.所以我使用chain().有没有办法可以用理解来表达它?
如果你想发布你自己的解决方案来解决交换对的元素的基本问题,请继续,我会投票给任何教我新东西的东西.但是,即使答案是"不,你做不到",我也只会接受一个针对我的问题的答案.
我编写用正则表达式解析文本的程序.应从用户处获得正则表达式.我希望使用glob语法进行用户输入,并在内部将glob字符串转换为正则表达式.例如:
"foo.? bar*"
Run Code Online (Sandbox Code Playgroud)
应转换为
"^.*foo\.\w\bar\w+.*"
Run Code Online (Sandbox Code Playgroud)
不知何故,我需要从字符串中转义所有有意义的字符,然后我需要替换glob*和?具有适当的正则表达式语法的字符.这样做最方便的方法是什么?
我刚刚找到了IPython,我可以报告我深深的爱.这种感情立竿见影.我认为这件事会变成持久的东西,就像我用屏幕那样.Ipython和屏幕碰巧也是最好的朋友,所以这是一个三角戏剧.纯粹是柏拉图式的,请注意.
IPython与我一起出现问题的原因非常多,因为我一般都喜欢命令提示,特别是*nix启发的提示灵感来自ksh,csh(是的,chs是一个怪物,但作为一个提示它运动很多很好功能),bash和zsh.而IPython确实感觉像是一个*nix提示骑手的家.混合系统shell和python也是一个非常好的主意.当然,在解决Python Challenge谜题时,IPython也有很多帮助.甚至非常宝贵.
现在,我也喜欢Vim.因为我在那些日子里学习了vi,所以没有回头路.当我有选择时,我就在Mac上.现在我想把我的IPython + MacVim工作流程粘在一起.到目前为止我所做的是我开始使用Ipython:
ipython -e "open -a MacVim"
Run Code Online (Sandbox Code Playgroud)
因此,当我从IPython编辑时,它启动MacVim并加载文件/模块.看起来有点像这样:
In [4]: %run foo #This also "imports" foo anew
hello world
In [5]: edit foo
Editing... done. Executing edited code... #This happens immediately
hello world
In [6]: %run foo
hello SO World
Run Code Online (Sandbox Code Playgroud)
好.我认为这可以改进.也许有办法将IPython与MacVim联系起来?请分享您的经验.当然,如果您使用TextMate或其他一些fav编辑器我也很感兴趣.也许有些课程是一般性的.
我正在尝试更改列名.首次尝试使用此脚本:
meta = MetaData()
users = Table('users', meta,
Column('id', Integer, primary_key=True),
Column('name', String(50), unique=True),
Column('email', String(120), unique=True)
)
def upgrade(migrate_engine):
meta.bind = migrate_engine
users.c.id.alter(name='id')
def downgrade(migrate_engine):
meta.bind = migrate_engine
users.c.id.alter(name='user_id')
Run Code Online (Sandbox Code Playgroud)
跑migrate.py test
在我的开发数据库(源码)的作品也是如此升级和降级.但是当它在Heroku(使用PostgreSQL 8.3)上部署到我的测试环境时,我会在尝试升级时得到一个跟踪.要点就是这个消息:
sqlalchemy.exc.ProgrammingError: (ProgrammingError) column "id" does not exist
Run Code Online (Sandbox Code Playgroud)
然后我尝试users.c.user_id
在升级方法中使用.在两种环境中都失败了:
AttributeError: user_id
Run Code Online (Sandbox Code Playgroud)
我现在使用的解决方法是这个脚本:
meta_old = MetaData()
meta_new = MetaData()
users_old = Table('users', meta_old,
Column('user_id', Integer, primary_key=True),
Column('name', String(50), unique=True),
Column('email', String(120), unique=True)
)
users_new = Table('users', meta_new,
Column('id', Integer, primary_key=True),
Column('name', String(50), unique=True),
Column('email', String(120), …
Run Code Online (Sandbox Code Playgroud) 任何人都知道如何使用Interface Builder进行iPhone开发的一些教程材料?我可以找到示例项目和内容,这非常有用,但是他们没有透露Interface Builder中的设置方式.
我有一些精灵,用户可以操纵,拖动和调整大小.现在我希望能够在这些精灵中显示文字.我尝试了很多很可能是愚蠢的方法.就像继承自Label并将一个Label子项添加到精灵中一样,但不显示任何文本.
一个令人不安的事情:从Label继承我是否会在调试器中运行并检查我的Label子类实例时显示文本.
我有这种感觉我错过了一些非常明显的东西.这是怎么做的,正确的方法?
我们希望实现一个"新闻提要",用户可以看到她的朋友广播的消息,先用最新消息排序.但是Feed应该反映她朋友列表中的变化.(如果她添加了新朋友,那些来自这些消息的消息应该包含在Feed中,如果她删除了朋友,则不应该包含他们的消息.)如果我们使用pubsub-test示例并将收件人列表附加到每封邮件,这意味着很多当用户连接和断开朋友时,操纵邮件收件人列表.
我们首先使用传统的RDBMS思想模拟发布 - 订阅"扇出".它似乎首先起作用,但是,由于IN运算符以它的方式工作,我们很快意识到我们无法继续这条路径.我们发现Brett Slatkin在去年Google I/O上的演示,我们现在已经观看了几次,但我们不清楚如何使用"动态"收件人列表.
我们需要的是在建模时如何"思考"的一些提示.
python google-app-engine social-networking google-cloud-datastore
我正在使用AudioTrack实例播放音乐.当用户在歌曲中改变歌曲或寻找时我想在播放新数据之前刷新缓冲区.stop()的文档似乎指导我做类似的事情:
audioTrack.pause();
audioTrack.flush();
audioTrack.play();
audioTrack.write(newData, ...);
Run Code Online (Sandbox Code Playgroud)
但是,这通常会产生轻微的静电.我尝试了一些解决方法.在我的测试设备上工作的一个(如摆脱静态)是flush()之后的Thread.sleep(10,0).但它感觉非常hackish和任意,如果它不能在其他设备上工作怎么办?此外,我不想阻止纳米片超过必要的时间.
解决这个问题的正确方法是什么?
我试图以给定的时间间隔在"脉冲"上发出序列.一切都是新的Rx,但认为这样做:
import RxSwift
let db = DisposeBag()
_ = Observable<Int>.interval(1.0, scheduler: MainScheduler.instance)
.debug("interval")
.subscribe(onNext: {
print($0)
})
.addDisposableTo(db)
Run Code Online (Sandbox Code Playgroud)
但它只输出:
2017-09-25 06:12:41.161: interval -> subscribed
Run Code Online (Sandbox Code Playgroud)
仅此而已.我在这里不理解什么?
python ×5
android ×1
apache-flex ×1
audiotrack ×1
cocoa-touch ×1
ferret ×1
flash ×1
glob ×1
heroku ×1
iphone ×1
ipython ×1
lucene ×1
postgresql ×1
regex ×1
rx-swift ×1
search ×1
sequences ×1
sqlite ×1
swift ×1
vim ×1