我有一个很大的清单l
.我想从元素4到6创建一个视图.我可以使用序列切片来完成.
>>> l=range(10)
>>> lv=l[3:6]
>>> lv
[3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
然而,lv是l片的副本.如果我更改基础列表,则lv不会反映更改.
>>> l[4] = -1
>>> lv
[3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
反之亦然我希望修改lv也反映在l中.除此之外,列表大小不会改变.
我不期待建立一个大班来做这件事.我只是希望其他Python大师可能知道一些隐藏的语言技巧.理想情况下,我希望它能像C中的指针算术一样.
int lv[] = l + 3;
Run Code Online (Sandbox Code Playgroud) 我把一堆相关的东西放进了一堂课.主要目的是将它们组织到命名空间中.
class Direction:
north = 0
east = 1
south = 2
west = 3
@staticmethod
def turn_right(d):
return turn_to_the_right
@staticmethod
def turn_left(d):
return turn_to_the_left
# defined a short alias because direction will be used a lot
D = Direction
d0 = D.north
d1 = D.turn_right(d)
Run Code Online (Sandbox Code Playgroud)
涉及的对象概念不多.在C++中,我将使用实际的语言关键字namespace
.Python中没有这样的东西.所以我试图class
用于此目的.
这是一个好主意吗?这种方法有任何陷阱吗?
我昨天刚回答了一个相关的问题.这个问题以不同的方式提出.这是我需要为自己做出的实际决定.
python中的静态方法与模块函数 - Stack Overflow
这是在Windows 7(64位),Python 2.6和Win32 Extensions for Python上运行的.
我有一个简单的脚本,只打印"你好世界".我可以用它启动它python hello.py
.在这种情况下,我可以将输出重定向到文件.但是如果我只是hello.py
在命令行输入并重定向输出来运行它,我会得到一个例外.
C:> python hello.py
hello world
C:> python hello.py >output
C:> type output
hello world
C:> hello.py
hello world
C:> hello.py >output
close failed in file object destructor:
Error in sys.excepthook:
Original exception was:
Run Code Online (Sandbox Code Playgroud)
我想我升级到Windows 7后首先得到此错误.我记得它应该在XP中运行.我见过有人在谈论这个bug python-Bugs-1012692 | 无法将输入传递给python程序.但那是很久以前的事了.它没有提到任何解决方案.
有没有人经历过这个?有人可以帮忙吗?
我有一个看起来像这样的DataFrame.我想在date_time
现场操作.
root
|-- host: string (nullable = true)
|-- user_id: string (nullable = true)
|-- date_time: timestamp (nullable = true)
Run Code Online (Sandbox Code Playgroud)
我试图添加一列来提取这一天.到目前为止,我的尝试失败了.
df = df.withColumn("day", df.date_time.getField("day"))
org.apache.spark.sql.AnalysisException: GetField is not valid on fields of type TimestampType;
Run Code Online (Sandbox Code Playgroud)
这也失败了
df = df.withColumn("day", df.select("date_time").map(lambda row: row.date_time.day))
AttributeError: 'PipelinedRDD' object has no attribute 'alias'
Run Code Online (Sandbox Code Playgroud)
知道如何做到这一点?
如何找出Python数据结构的内存大小?我正在寻找类似的东西:
sizeof({1:'hello', 2:'world'})
Run Code Online (Sandbox Code Playgroud)
如果它以递归方式计算每件事物,那就太好了.但即使是基本的非递归结果也有帮助.基本上我想了解一下各种实现选项,比如tuple vs list vs class在内存占用方面.这很重要,因为我计划将数百万个对象实例化.
我目前的开发平台是CPython 2.6.
我有一堆用Python编写的脚本.我从Windows命令提示符运行它们
c:> my_script.py arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
这可以在多年前的每台计算机和每个Windows版本中使用.刚才我的Windows 7系统崩溃了.该脚本已加载并执行.但是没有一个参数传递给脚本.
为了说明这一点,我有一个名为py_echo.py的脚本:
from pprint import pprint as pp
import sys
if __name__ =='__main__':
pp(sys.argv)
Run Code Online (Sandbox Code Playgroud)
然后我用参数a,b,c执行它.他们都没有通过.
c:\Python27\Lib\site-packages>py_echo.py a b c
['C:\\0\\usr\\bin\\py_echo.py']
Run Code Online (Sandbox Code Playgroud)
如果我显式运行python.exe,则正确传递参数
c:\Python27\Lib\site-packages>python.exe c:\0\usr\bin\py_echo.py a b c
['c:\\0\\usr\\bin\\py_echo.py', 'a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
它以前工作过.在我从PC上卸载了一堆旧版本的Python解释器和模块之后,它才开始崩溃.重新安装Python没有帮助.我想知道我该怎么做才能解决这个问题?
我已经变得非常依赖我多年来建立的脚本.当他们休息时我觉得非常残疾:(
我可以__repr__
为类而不是实例定义一个吗?例如,我正在尝试这样做
class A(object):
@classmethod
def __repr__(cls):
return 'My class %s' % cls
Run Code Online (Sandbox Code Playgroud)
我得到的是
In [58]: a=A()
In [59]: a
Out[59]: My class <class '__main__.A'>
In [60]: A
Out[60]: __main__.A
Run Code Online (Sandbox Code Playgroud)
我试图让第60行的输出看起来像"我的A类",而不是实例a.我想这样做的原因是我使用Python的元类生成了很多类.而且我想要一种更易读的方法来识别类而不是股票代理.
通常Python描述符被定义为类属性.但在我的情况下,我希望每个对象实例都有不同的设置描述符,这取决于输入.例如:
class MyClass(object):
def __init__(self, **kwargs):
for attr, val in kwargs.items():
self.__dict__[attr] = MyDescriptor(val)
Run Code Online (Sandbox Code Playgroud)
每个对象都具有在实例化时确定的不同属性集.由于这些是一次性对象,因此首先将它们子类化是不方便的.
tv = MyClass(type="tv", size="30")
smartphone = MyClass(type="phone", os="android")
tv.size # do something smart with the descriptor
Run Code Online (Sandbox Code Playgroud)
将描述符分配给对象似乎不起作用.如果我尝试访问该属性,我会得到类似的东西
<property at 0x4067cf0>
Run Code Online (Sandbox Code Playgroud)
你知道为什么这不起作用吗?有什么工作吗?
我需要在图表上绘制n个不同的对象.我想为每个颜色选择不同的颜色,以使它们可以区分.物体将被移动,所以我不能指望像"四色定理"这样的想法为不相邻的物品分配相同的颜色.到目前为止,我的问题需要最多20个不同的项目.
是否有一种很好的方法可以选择不同的颜色,使它们尽可能彼此区分?
我可以做这样的两级嵌套循环
for i1 in 1:n
for i2 in 1:n
do something with (i1,i2)
Run Code Online (Sandbox Code Playgroud)
如何将其扩展到任意级别的嵌套循环?
例如,我可以在Python中执行此操作来循环n ^ m的笛卡尔积
for i in (itertools.product(xrange(n),repeat=m)):
Run Code Online (Sandbox Code Playgroud)
喜欢
for i in (itertools.product(xrange(2),repeat=3)):
print i
(0, 0, 0)
(0, 0, 1)
(0, 1, 0)
(0, 1, 1)
(1, 0, 0)
(1, 0, 1)
(1, 1, 0)
(1, 1, 1)
Run Code Online (Sandbox Code Playgroud)
谢谢@ tholy的评论.我已经成功应用了Iterators.jl.我是朱莉娅新手,所以我的代码可能很笨拙.
for i in product(repmat(Any[1:2],3)...)
println(i)
end
(1,1,1)
(2,1,1)
(1,2,1)
(2,2,1)
(1,1,2)
(2,1,2)
(1,2,2)
(2,2,2)
Run Code Online (Sandbox Code Playgroud) 我想制作一个x轴对齐的多重绘图,以便我们可以比较两组数据.我希望它看起来像这样
在我的情况下,有一些额外要求,一些情节是线条,一些是酒吧.因此,即使数据范围相同,默认比例也不会对齐.
我发现了一些关于"堆叠"图表的好建议.它有点复杂但是有前途的尝试方式.
然而,我还有其他用例可以推动简单堆叠的包络.例如,当x轴和y轴都必须像这样对齐时,我想做散点图矩阵
http://www.statmethods.net/graphs/images/spmatrix3.png
不是将许多图表放在一个Highchart中,这可能需要有许多单独的图表,但可以更好地控制轴的布局方式.
默认矩阵乘法计算为
c[i,j] = sum(a[i,k] * b[k,j])
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用自定义公式而不是点积来获取
c[i,j] = sum(a[i,k] == b[k,j])
Run Code Online (Sandbox Code Playgroud)
在numpy中有一种有效的方法吗?
python ×8
command-line ×2
apache-spark ×1
arrays ×1
axis ×1
c ×1
class ×1
colors ×1
dot-product ×1
highcharts ×1
image ×1
julia ×1
list ×1
memory ×1
metaclass ×1
namespaces ×1
numpy ×1
oop ×1
pyspark ×1
redirect ×1
scatter-plot ×1
winapi ×1
windows ×1
windows-7 ×1