在下面的方法定义,什么是*和**为做param2?
def foo(param1, *param2):
def bar(param1, **param2):
Run Code Online (Sandbox Code Playgroud) python syntax parameter-passing variadic-functions argument-unpacking
有没有办法将Python元组扩展为函数 - 作为实际参数?
例如,这里expand()有魔力:
some_tuple = (1, "foo", "bar")
def myfun(number, str1, str2):
return (number * 2, str1 + str2, str2 + str1)
myfun(expand(some_tuple)) # (2, "foobar", "barfoo")
Run Code Online (Sandbox Code Playgroud)
我知道可以定义myfun为myfun((a, b, c)),但当然可能有遗留代码.谢谢
在Python中,如何将列表转换为*args?
我需要知道因为功能
scikits.timeseries.lib.reportlib.Report.__init__(*args)
Run Code Online (Sandbox Code Playgroud)
想要传递几个time_series对象*args,而我有一个时间序列对象列表.
这很难看.什么是Pythonic方式呢?
import datetime
t= (2010, 10, 2, 11, 4, 0, 2, 41, 0)
dt = datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], t[6])
Run Code Online (Sandbox Code Playgroud) 我有一个数组列表,我想获得数组中元素的笛卡尔积.
我将用一个例子来说明这个更具体......
itertools.product似乎可以做到这一点,但我陷入了一些细节.
arrays = [(-1,+1), (-2,+2), (-3,+3)];
Run Code Online (Sandbox Code Playgroud)
如果我做
cp = list(itertools.product(arrays));
Run Code Online (Sandbox Code Playgroud)
我明白了
cp = cp0 = [((-1, 1),), ((-2, 2),), ((-3, 3),)]
Run Code Online (Sandbox Code Playgroud)
但我想得到的是
cp1 = [(-1,-2,-3), (-1,-2,+3), (-1,+2,-3), (-1,+2,+3), ..., (+1,+2,-3), (+1,+2,+3)].
Run Code Online (Sandbox Code Playgroud)
我尝试了一些不同的东西:
cp = list(itertools.product(itertools.islice(arrays, len(arrays))));
cp = list(itertools.product(iter(arrays, len(arrays))));
Run Code Online (Sandbox Code Playgroud)
他们都让我CP0代替CP1.
有任何想法吗?
提前致谢.
这是我目前的代码:
print(list[0], list[1], list[2], list[3], list[4], sep = '\t')
Run Code Online (Sandbox Code Playgroud)
我想写得更好.但
print('\t'.join(list))
Run Code Online (Sandbox Code Playgroud)
不会起作用,因为列表元素可能是数字,其他列表等,所以join会抱怨.
我正在学习线性代数课程,我希望可视化动作中的向量,例如向量加法,法向量等.
例如:
V = np.array([[1,1],[-2,2],[4,-7]])
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想绘制3个向量V1 = (1,1), M2 = (-2,2), M3 = (4,-7).
然后我应该能够添加V1,V2来绘制一个新的矢量V12(在一个图中一起).
当我使用下面的代码时,情节不符合预期
import numpy as np
import matplotlib.pyplot as plt
M = np.array([[1,1],[-2,2],[4,-7]])
print("vector:1")
print(M[0,:])
# print("vector:2")
# print(M[1,:])
rows,cols = M.T.shape
print(cols)
for i,l in enumerate(range(0,cols)):
print("Iteration: {}-{}".format(i,l))
print("vector:{}".format(i))
print(M[i,:])
v1 = [0,0],[M[i,0],M[i,1]]
# v1 = [M[i,0]],[M[i,1]]
print(v1)
plt.figure(i)
plt.plot(v1)
plt.show()
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助,谢谢你提前.
如果一个函数需要n个参数,并且有另一个函数返回一个包含n个项目的序列(或者我有一个包含n个项目的序列),有没有办法"映射"这两个函数(或者make第一个函数采用n个项目的序列作为输入和返回结果)我不希望(也许在某些情况下不能)自己编辑函数并更改其参数参数和返回值类型.
即)
def func1(x, y, z):
return x+y+z
def func2(w):
return [i for i in range(w,w+3)]
Run Code Online (Sandbox Code Playgroud)
func1(func2( ... ))在这种情况下不能.
我希望从我的 Python 程序中内置的列表中打印出结果。
我将获取列表中值的结果并将它们打印出来,以制表符分隔。
我有一个名为“a”的列表,我将只选择元素来生成最终表格。
但是当我使用 .format 方法时,我不得不四次调用列表。
a = [1,2,3,4]
print('a{[0]}\ta{[3]}\ta{[1]}\ta{[2]}'.format(a, a, a, a))
Run Code Online (Sandbox Code Playgroud)
输出:
a1 a4 a2 a3
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法告诉格式命令每次使用列表“a”?
我必须编写一个简单的函数,它接受可变数量的参数并打印总和,就像(忽略错误检查)一样简单:
def add(*params):
sum = 0
for num in params:
sum += num
print(sum)
Run Code Online (Sandbox Code Playgroud)
我必须调用脚本并为其提供参数,然后将在函数中使用这些参数。我得到这样的论点:
import sys
sys.argv[1:]
Run Code Online (Sandbox Code Playgroud)
但这是一个数组并将其发送到add仅意味着传递 1 个列表参数。我是 Python 新手,所以也许所有这些听起来都很愚蠢,但是有没有办法将这些参数正确地传递给函数?
python ×9
python-3.x ×2
tuples ×2
arguments ×1
function ×1
list ×1
matplotlib ×1
numpy ×1
printing ×1
python-2.7 ×1
syntax ×1
vector ×1