我想在字典中的所有键上映射一个函数.我希望像下面这样的东西可以工作,但过滤器不能直接应用于字典.实现这一目标的最简洁方法是什么?
在这个例子中,我试图将每个值递增1.但这对于示例来说是偶然的 - 主要目的是弄清楚如何将map()应用于字典.
var d = ["foo" : 1, "bar" : 2]
d.map() {
$0.1 += 1
}
Run Code Online (Sandbox Code Playgroud) 语言指南没有透露列表理解的痕迹.在Swift中实现这一目标的最佳方法是什么?我正在寻找类似的东西:
evens = [ x for x in range(10) if x % 2 == 0]
Run Code Online (Sandbox Code Playgroud) 示例字符串:
/ GASG /串
预期结果 : string
要删除的字符:"/"符号之间的所有字符,包括符号
我有一个CSV文件,其中包含包含换行符的字段,例如:
A, B, C, D, E, F
123, 456, tree
, very, bla, indigo
Run Code Online (Sandbox Code Playgroud)
(在这种情况下,第二行中的第三个字段是"tree \n"
我尝试了以下方法:
import csv
catalog = csv.reader(open('test.csv', 'rU'), delimiter=",", dialect=csv.excel_tab)
for row in catalog:
print "Length: ", len(row), row
Run Code Online (Sandbox Code Playgroud)
我得到的结果是这样的:
Length: 6 ['A', ' B', ' C', ' D', ' E', ' F']
Length: 3 ['123', ' 456', ' tree']
Length: 4 [' ', ' very', ' bla', ' indigo']
Run Code Online (Sandbox Code Playgroud)
有谁知道如何快速删除多余的换行符?
谢谢!
在python中使用Growl但是没有出现任何运气.使用以下代码.使用Growl 1.3.3在OSX Lion上运行.有人这个有用吗?
import Growl
notifier = Growl.GrowlNotifier(applicationName='mzgrowl', notifications=['alive'])
notifier.register()
notifier.notify('alive', 'mzgrowl', 'test message')
Run Code Online (Sandbox Code Playgroud) 在Swift中编写简单的字数统计函数有什么更优雅的方法?
//Returns a dictionary of words and frequency they occur in the string
func wordCount(s: String) -> Dictionary<String, Int> {
var words = s.componentsSeparatedByString(" ")
var wordDictionary = Dictionary<String, Int>()
for word in words {
if wordDictionary[word] == nil {
wordDictionary[word] = 1
} else {
wordDictionary.updateValue(wordDictionary[word]! + 1, forKey: word)
}
}
return wordDictionary
}
wordCount("foo foo foo bar")
// Returns => ["foo": 3, "bar": 1]
Run Code Online (Sandbox Code Playgroud) 使TDD变得更好的一个原因是在编写测试后生成代码的能力.这是通过Eclipse中的Quick Fix选项(Cmd-F1)完成的 - 或者使用Jetbrains工具中的Alt-Enter使用类似选项.大多数用法只涉及四个选项:
有没有办法使用插件,Automator或其他任何东西将此功能添加到Xcode?我觉得只有其中四个我可以回到使用Xcode而不是被困在Appcode中.
有没有办法让列表理解中的两个或多个项目出列.
即我想做这样的事情:
>>> q = [1, 2, 3, 4]
>>> r = [x+y for x, y in q]
** This does not work though :( **
Run Code Online (Sandbox Code Playgroud)
预期:
>>> r
[3, 7]
Run Code Online (Sandbox Code Playgroud) 我需要开始使用AppCode,因为Xcode不支持red-green-refactor工作流程.然而,IntelliJ键绑定真的很烦人 - 有没有办法导入Xcode键绑定批发?
我得到了一些非常令人惊讶的结果,这些结果似乎表明将迭代器包装在列表中更有效,并且与使用lambda行走它相比,获得它的长度.这怎么可能?直觉会建议分配所有这些列表会更慢.
是的 - 我知道你不能总是这样做,因为迭代器可以是无限的.:)
from itertools import groupby
from timeit import Timer
data = "abbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccac"
def rle_walk(gen):
ilen = lambda gen : sum(1 for x in gen)
return [(ch, ilen(ich)) for ch,ich in groupby(data)]
def rle_list(data):
return [(k, len(list(g))) for k,g in groupby(data)]
# randomy data
t = Timer('rle_walk("abbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccac")', "from __main__ import rle_walk; gc.enable()")
print t.timeit(1000)
t = Timer('rle_list("abbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccacabbbccac")', "from __main__ import rle_list; gc.enable()")
print t.timeit(1000)
# chunky blocks
t = Timer('rle_walk("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccc")', "from __main__ import rle_walk; gc.enable()")
print t.timeit(1000)
t …
Run Code Online (Sandbox Code Playgroud) 我正在观看WWDC2014上的一些视频并尝试编写我喜欢的代码,但我注意到的一个奇怪的事情是Swift一直对我生气并希望我投射到不同的数字类型.这很容易,但在WWDC的视频中他们不需要这样做.以下是"Interface Builder的新功能"中的示例:
-M_PI/2一直给我错误:"无法找到接受提供的参数的'/'的重载'
有没有人有这个问题的解决方案,这不仅仅涉及投射,因为有明显的另一种方式这样做?对于类似的问题,我有很多例子.
if !ringLayer {
ringLayer = CAShapeLayer()
let innerRect = CGRectInset(bounds, lineWidth / 2.0, lineWidth / 2.0)
let innerPath = UIBezierPath(ovalInRect: innerRect)
ringLayer.path = innerPath.CGPath
ringLayer.fillColor = nil
ringLayer.lineWidth = lineWidth
ringLayer.strokeColor = UIColor.blueColor().CGColor
ringLayer.anchorPoint = CGPointMake(0.5, 0.5)
ringLayer.transform = CATransform3DRotate
(ringLayer.transform, -M_PI/2, 0, 0, 1)
layer.addSublayer(ringLayer)
}
ringLayer.frame = layer.bounds
Run Code Online (Sandbox Code Playgroud) 我想在字符串上运行一个过滤器.我的第一次尝试失败,因为字符串没有自动转换为Character [].
var s: String = "abc"
s.filter { $0 != "b" }
Run Code Online (Sandbox Code Playgroud)
如果我用下面的代码笨拙地将String转换为Character [],它将按预期工作.但肯定有一个更简洁的方式?
var cs:Character[] = []
for c in s {
cs = cs + [c]
}
cs = cs.filter { $0 != "b" }
println(cs)
Run Code Online (Sandbox Code Playgroud)