在下面的方法定义,什么是*
和**
为做param2
?
def foo(param1, *param2):
def bar(param1, **param2):
Run Code Online (Sandbox Code Playgroud) python syntax parameter-passing variadic-functions argument-unpacking
**kwargs
在Python中有什么用途?
我知道你可以objects.filter
在桌子上做一个并传递一个**kwargs
参数.
我也可以这样做来指定时间增量timedelta(hours = time1)
吗?
它究竟是如何工作的?这类是"解包"吗?喜欢a,b=1,2
?
我想每次打电话时都要在我的字符串上添加换行符file.write()
.在Python中最简单的方法是什么?
如何在熊猫中做到这一点:
我extract_text_features
在单个文本列上有一个函数,返回多个输出列.具体来说,该函数返回6个值.
该函数有效,但似乎没有任何正确的返回类型(pandas DataFrame/numpy数组/ Python列表),以便输出可以正确分配 df.ix[: ,10:16] = df.textcol.map(extract_text_features)
所以我认为我需要回到迭代df.iterrows()
,按照这个?
更新:迭代df.iterrows()
速度至少慢20倍,所以我投降并将函数拆分为六个不同的.map(lambda ...)
调用.
是否有语法允许您将列表扩展为函数调用的参数?
例:
# Trivial example function, not meant to do anything useful.
def foo(x,y,z):
return "%d, %d, %d" %(x,y,z)
# List of values that I want to pass into foo.
values = [1,2,3]
# I want to do something like this, and get the result "1, 2, 3":
foo( values.howDoYouExpandMe() )
Run Code Online (Sandbox Code Playgroud) 我有两个pandas数据帧,我想在Jupyter笔记本中显示它们.
做类似的事情:
display(df1)
display(df2)
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) 我的代码
$ python
Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul 2 2016, 17:53:06)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = (1, 2)
>>> '%d %d %d' % (0, *a)
'0 1 2'
>>> '%d %d %d' % (*a, 3)
'1 2 3'
>>> '%d %d' % (*a)
File "<stdin>", line 1
SyntaxError: can't use starred expression here
>>>
Run Code Online (Sandbox Code Playgroud)
我的问题,为什么?
用更严肃的语气:我想要一个答案或参考,详细说明使用星号表达的所有细节,因为碰巧我有时会对其行为感到惊讶......
为了反映我的问题后面的一些启发性评论,我添加了以下代码
>>> '%d %d' % (, …
Run Code Online (Sandbox Code Playgroud) 一个列表:
a = ['a', 'b', 'c', 3, 4, 'd', 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)
我想要一个使用子集的列表a[0:2],a[4], a[6:]
,
那是我想要一个清单 ['a', 'b', 4, 6, 7, 8]
为了理解*args和**kwargs我做了一些搜索,当我遇到这个问题时*args和**kwargs?
所选答案下面的答案引起了我的注意,这是:
class Foo(object):
def __init__(self, value1, value2):
# do something with the values
print value1, value2
class MyFoo(Foo):
def __init__(self, *args, **kwargs):
# do something else, don't care about the args
print 'myfoo'
super(MyFoo, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
我在这个例子上尝试了一些东西并以这种方式运行代码:
class Foo(object):
def __init__(self, value1, value2):
# do something with the values
print 'I think something is being called here'
print value1, value2
class MyFoo(Foo):
def __init__(self, *args, **kwargs):
# do something else, don't care about the args
print args, kwargs …
Run Code Online (Sandbox Code Playgroud)