我正在尝试将列表映射到十六进制,然后在其他地方使用列表.在python 2.6中,这很简单:
答: Python 2.6:
>>> map(chr, [66, 53, 0, 94])
['B', '5', '\x00', '^']
Run Code Online (Sandbox Code Playgroud)
但是,在Python 3.1中,上面返回了一个map对象.
B: Python 3.1:
>>> map(chr, [66, 53, 0, 94])
<map object at 0x00AF5570>
Run Code Online (Sandbox Code Playgroud)
如何在Python 3.x上检索映射列表(如上面的A中所示)?
或者,有更好的方法吗?我的初始列表对象有大约45个项目,id喜欢将它们转换为十六进制.
我试图环顾网络寻找将字符串拆分成字符数组的答案,但我似乎无法找到一个简单的方法
str.split(//)似乎没有像Ruby那样工作.有没有循环的简单方法吗?
我想使用.replace函数来替换多个字符串.
我现在有
string.replace("condition1", "")
Run Code Online (Sandbox Code Playgroud)
但是想要有类似的东西
string.replace("condition1", "").replace("condition2", "text")
Run Code Online (Sandbox Code Playgroud)
虽然那感觉不是很好的语法
这样做的正确方法是什么?有点像grep/regex你可以做什么\1,\2并将字段替换为某些搜索字符串
是否有更简洁,高效或简单的pythonic方式来执行以下操作?
def product(list):
p = 1
for i in list:
p *= i
return p
Run Code Online (Sandbox Code Playgroud)
编辑:
我实际上发现这比使用operator.mul要快一些:
from operator import mul
# from functools import reduce # python3 compatibility
def with_lambda(list):
reduce(lambda x, y: x * y, list)
def without_lambda(list):
reduce(mul, list)
def forloop(list):
r = 1
for x in list:
r *= x
return r
import timeit
a = range(50)
b = range(1,50)#no zero
t = timeit.Timer("with_lambda(a)", "from __main__ import with_lambda,a")
print("with lambda:", t.timeit())
t = timeit.Timer("without_lambda(a)", "from __main__ …Run Code Online (Sandbox Code Playgroud) 我正在学习Python中的过滤器概念.我正在运行这样一个简单的代码.
>>> def f(x): return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
Run Code Online (Sandbox Code Playgroud)
但是我没有得到一个列表,而是得到了这样的消息.
<filter object at 0x00FDC550>
Run Code Online (Sandbox Code Playgroud)
这是什么意思?这是否意味着我的过滤对象即出来的列表存储在该内存位置?我如何获得我需要的清单?
网上似乎有很多关于python 3.0中reduce()函数更改以及如何删除它的讨论.我有点难以理解为什么会这样; 我发现在各种情况下使用它是相当合理的.如果蔑视只是主观的,我无法想象会有这么多人关心它.
我错过了什么?reduce()有什么问题?
我有格式为token/tag的标记文件,我尝试了一个函数,它返回一个带有来自(word,tag)列表的单词的元组.
def text_from_tagged_ngram(ngram):
if type(ngram) == tuple:
return ngram[0]
return " ".join(zip(*ngram)[0]) # zip(*ngram)[0] returns a tuple with words from a (word,tag) list
Run Code Online (Sandbox Code Playgroud)
在python 2.7中它运行良好,但在python 3.4中它给我以下错误:
return " ".join(list[zip(*ngram)[0]])
TypeError: 'zip' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
在Python IDLE 3.5.0 shell中工作.根据我对内置"过滤器"函数的理解,它会返回列表,元组或字符串,具体取决于您传入的内容.那么,为什么下面的第一个分配工作,而不是第二个('>>>只是交互式Python提示)
>>> def greetings():
return "hello"
>>> hesaid = greetings()
>>> print(hesaid)
hello
>>>
>>> shesaid = filter(greetings(), ["hello", "goodbye"])
>>> print(shesaid)
<filter object at 0x02B8E410>
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个元组列表,其中元组内容是列表中的数字9和数字.
输入清单:
myList = [1, 8, 9, 2, 4, 9, 6, 7, 9, 8]
Run Code Online (Sandbox Code Playgroud)
期望的输出:
sets = [(8, 9), (4, 9), (7, 9)]
Run Code Online (Sandbox Code Playgroud)
码:
sets = [list(zip(myList[i:i], myList[-1:])) for i in myList if i==9]
Run Code Online (Sandbox Code Playgroud)
目前的结果:
[[], [], []]
Run Code Online (Sandbox Code Playgroud) 我是Python的新手.你能告诉我以下代码有什么问题吗?当我运行它时,我收到一条错误消息"NameError:全局名称'reduce'未定义".我问Goolge但是没用.:(
def main():
def add(x,y): return x+y
reduce(add, range(1, 11))
if __name__=='__main__':
main()
Run Code Online (Sandbox Code Playgroud)