在Python 2中,我可以执行以下操作:
>> d = {'a':1}
>> extras = [{'b':2}, {'c':4}]
>> map(d.update, extras)
>> d['c']
>> 4
Run Code Online (Sandbox Code Playgroud)
在Python 3中得到一个KeyError:
>> d = {'a':1}
>> extras = [{'b':2}, {'c':4}]
>> map(d.update, extras)
>> d['c']
>> KeyError: 'c'
Run Code Online (Sandbox Code Playgroud)
我想在Python 3中实现与Python 2中相同的行为.
我知道Python 3中的map将返回一个迭代器(lazy evaluation和whatnot),必须迭代它才能更新字典.
我假设d['c']密钥查找会以某种方式触发映射迭代,但事实并非如此.
有没有pythonic方法来实现这种行为而不编写for循环,我发现与map相比,它是冗长的.
我想过使用列表推导:
>> d = {'a':1}
>> extras = [{'b':2}, {'c':4}]
>> [x for x in map(d.update, extras)]
>> d['c']
>> 4
Run Code Online (Sandbox Code Playgroud)
但它似乎并不像pythonic.
我想知道zip()python 2 和 python 3 中的函数有什么区别。我注意到timeit在这两个函数上使用模块时,python 3 函数要快得多。非常感谢提前:)
我想从python3中的单行输入读取一个整数数组.例如:将此数组读取到变量/列表
1 3 5 7 9
Run Code Online (Sandbox Code Playgroud)
arr = input.split(' ')但这并没有将它们转换为整数.它创建字符串数组
arr = input.split(' ')
for i,val in enumerate(arr): arr[i] = int(val)
第二个是为我工作.但我正在寻找一个优雅的(单线)解决方案.
我正在尝试从使用Python的书中学习apriori机器学习算法,作为该学习的一部分,我目前仍然遇到以下问题:
以下代码构造似乎工作正常:
Ck = [[1], [2], [3], [4], [5]]
for tranid in range(10):
for candidate in Ck:
print("Printing candidate value: ", candidate)
Run Code Online (Sandbox Code Playgroud)
但是,以下不起作用:
Ck = [[1], [2], [3], [4], [5]]
Ck2 = map(frozenset, Ck)
for tranid in range(10):
for candidate in Ck2:
print("Printing candidate value: ", candidate)
Run Code Online (Sandbox Code Playgroud)
当我将原始迭代的每个元素映射到冻结集时,我注意到内部循环("对于Ck2中的候选者")仅执行一次.之后它永远不会执行.上面没有冻结集的代码正确地循环内循环10次.但是,使用frozenset映射,我可以让内循环只执行一次.
请帮我解决这个问题.本书已将可迭代值映射到frozenset,因为它们不希望它对于算法的目的是可变的.我只是想按原样跟随它.
我在Anaconda(Spyder)上使用Python 3.5.1.
请帮助,因为我不熟悉Python和机器学习.
谢谢和问候,Mahesh.
我花了将近 2 小时的时间使用weights.npz中的预训练模型(tensorflow)来 检测车牌,但我无法修复它。我收到此错误消息,我以前从未见过。那么,如何解决呢?
回溯(最近一次调用最后一次):文件“./detect.py”,第 189 行,在 pt1 = tuple(reversed(map(int, pt1))) TypeError: 'map' 对象不可逆
我有一个要打印为列表的地图对象,但此后继续用作地图对象。实际上,我想打印长度,以便将其强制转换为列表,但是如果仅按如下所示打印内容,也会出现此问题:
print("1",my_map)
print("1",list(my_map))
print("2",my_map)
print("2",list(my_map))
Run Code Online (Sandbox Code Playgroud)
这给了我以下输出。
1 <map object at 0x7fd2962a75f8>
1 [(1000.0, 1.0, 0.01, 0.01, 0.01, 0.01, 0.01)]
2 <map object at 0x7fd2962a75f8>
2 []
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,如何避免继续使用地图及其内容?
我正在寻找sched模块的替代方案,这将允许我随时取消所有事件.sched只允许通过id取消单个事件(在调度事件时从调度程序返回).任何指向Python替代sched的指针都将受到赞赏.谢谢Toni p
我想在lambda中使用print.像这样的东西:
lambda x: print x
Run Code Online (Sandbox Code Playgroud)
我明白,在Python 2.7中打印不是一个功能.所以,基本上,我的问题是:在Python 2.7中使用print作为函数是否有一种漂亮的方法?
为什么map使用可多次迭代的对象调用时不返回也可多次迭代的对象?我认为后者更为合理。
我的用例是我有很多data,因此只能对其进行迭代。map(理论上)非常适合 上的操作data,因为它是惰性的。然而,在下面的示例中,我希望两次长度相同。
iterable = [1,2,3,4] # this can be iterated repeatedly
m = map(lambda x:x**2, iterable) # this again should be iterable repeatedly
print(len(list(m))) # 4
print(len(list(m))) # 0
Run Code Online (Sandbox Code Playgroud)
如何映射可迭代结构并获取可迭代结构?
编辑: 这是一个恕我直言应该如何工作的示例,演示了惰性评估:
def g():
print('g() called')
data = [g, g]
# map is lazy, so nothing is called
m = map(lambda g: g(), data)
print('m: %s' % len(list(m))) # g() is called here
print('m: %s' % len(list(m))) # this should work, …Run Code Online (Sandbox Code Playgroud) python ×8
python-3.x ×5
python-2.7 ×2
arrays ×1
casting ×1
dictionary ×1
events ×1
frozenset ×1
input ×1
iteration ×1
iterator ×1
list ×1
map-function ×1
opencv ×1
python-3.2 ×1
set ×1
tensorflow ×1
zip ×1