什么时候应该使用生成器表达式?什么时候应该在Python中使用列表推导?
# Generator expression
(x*2 for x in range(256))
# List comprehension
[x*2 for x in range(256)]
Run Code Online (Sandbox Code Playgroud) 从列表中提取项目并将它们作为参数传递给函数调用的简单方法是什么,如下例所示?
例:
def add(a,b,c,d,e):
print(a,b,c,d,e)
x=(1,2,3,4,5)
add(magic_function(x))
Run Code Online (Sandbox Code Playgroud) 如何格式化列表以在单独的行上打印每个元素?例如,我有:
mylist = ['10', '12', '14']
Run Code Online (Sandbox Code Playgroud)
我希望格式化列表,使其打印如下:
10
12
14
Run Code Online (Sandbox Code Playgroud)
所以\n,括号,逗号和''被删除,每个元素都打印在一个单独的行上谢谢
要在数字矩阵中找到最大值,我们可以编码5行来解决问题:
ans = matrix[0][0]
for x in range(len(matrix)):
for y in range(len(matrix[0])):
ans = max(ans, matrix[x][y])
return ans
Run Code Online (Sandbox Code Playgroud)
这个问题有一个单行解决方案吗?我提出的那个实际上非常尴尬:
return max(max(matrix, key=max))
Run Code Online (Sandbox Code Playgroud)
要么
return max(map(max, matrix))
Run Code Online (Sandbox Code Playgroud) 所以我从官方文档中得到了这些例子. https://docs.python.org/2/library/timeit.html
究竟是什么让第一个例子(生成器表达式)比第二个(列表理解)慢?
>>> timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
0.8187260627746582
>>> timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000)
0.7288308143615723
Run Code Online (Sandbox Code Playgroud) 我一直试图像在正常语句中添加新行一样这样做,但如果我这样做,它就不起作用。
cars = ["audi", "bmw", "toyota"]
print(\ncars)
Run Code Online (Sandbox Code Playgroud)
它显示此错误:
SyntaxError: unexpected character after line continuation character
Run Code Online (Sandbox Code Playgroud)
如何向打印列表中添加新行?顺便说一句,我是 python 和一般编程的初学者。
因此,我有一个项目,其中有一个字符串列表:
outputs = ['cow', 'chicken', 'pig']
Run Code Online (Sandbox Code Playgroud)
我需要将它们转换为字符串,每个值都由换行符分隔,如下所示:
cow
chicken
pig
Run Code Online (Sandbox Code Playgroud)
我在python列表中找到了以换行符分隔值的解决方案,但它使用的是这样的列表:
outputs = [['cow'], ['chicken'], ['pig']]
Run Code Online (Sandbox Code Playgroud)
每当我跑步时:
answer = "\n".join(map(lambda x: x[0], outputs))
print(answer)
Run Code Online (Sandbox Code Playgroud)
它返回'c',与该问题中的所有其他答案一样。