小编nos*_*nos的帖子

将字符列表转换为字符串

如果我有一个字符列表:

a = ['a','b','c','d']
Run Code Online (Sandbox Code Playgroud)

如何将其转换为单个字符串?

a = 'abcd'
Run Code Online (Sandbox Code Playgroud)

python string

401
推荐指数
5
解决办法
75万
查看次数

Python整数范围

在Python中,有没有办法获得可以使用的最大整数?是否有像INT_MAX这样的预定义常量?

python integer

72
推荐指数
1
解决办法
6万
查看次数

python pandas dataframe,是值传递还是传递引用

如果我将数据帧传递给函数并在函数内修改它,它是按值传递还是按引用传递?

我运行以下代码

a = pd.DataFrame({'a':[1,2], 'b':[3,4]})
def letgo(df):
    df = df.drop('b',axis=1)
letgo(a)
Run Code Online (Sandbox Code Playgroud)

a函数调用后,值不会改变.这是否意味着它是传值?

我也试过以下

xx = np.array([[1,2], [3,4]])
def letgo2(x):
    x[1,1] = 100
def letgo3(x):
    x = np.array([[3,3],[3,3]])
Run Code Online (Sandbox Code Playgroud)

事实证明letgo2()确实发生了变化xxletgo3()没有变化.为什么会这样?

python pass-by-reference pass-by-value pandas

58
推荐指数
4
解决办法
4万
查看次数

python'不是'运营商

我注意到有一个比较运算符is not.我应该把它翻译成

!= 
Run Code Online (Sandbox Code Playgroud)

代替

== not
Run Code Online (Sandbox Code Playgroud)

python

44
推荐指数
3
解决办法
6万
查看次数

是python + =字符串连接不好的做法?

我正在阅读The Hitchhiker的Python指南,还有一个简短的代码片段

foo = 'foo'
bar = 'bar'

foobar = foo + bar  # This is good
foo += 'ooo'  # This is bad, instead you should do:
foo = ''.join([foo, 'ooo'])
Run Code Online (Sandbox Code Playgroud)

作者指出''.join()并不总是比它快+,所以他并不反对使用+字符串连接.

但为什么foo += 'ooo'不好的做法却被foobar=foo+bar认为是好的?

  • foo += bar好?
  • foo = foo + 'ooo'好?

在此代码片段之前,作者写道:

关于字符串的最后一件事是使用join()并不总是最好的.在您从预定数量的字符串创建新字符串的实例中,使用加法运算符实际上更快,但在上述情况下或者在您添加到现有字符串的情况下,使用join()应该是你喜欢的方法.

python string string-concatenation

33
推荐指数
1
解决办法
4万
查看次数

python如何计算元组的哈希值

在python中,如果我有一个包含许多元素的元组,它的哈希值是根据元素的元素id还是元素的内容计算的?

在这个例子中,

a = (1, [1,2])
hash(a)
Run Code Online (Sandbox Code Playgroud)

它错误地说列表是不可用的.所以我猜它不是由id计算的,或者可能是检查元素是否可变.

现在看这个例子

class A: pass
a0 = A()
ta = (1, a0)
hash(ta)  # -1122968024
a0.x = 20
hash(ta)  # -1122968024
Run Code Online (Sandbox Code Playgroud)

事实证明,散列ta不随其元素的修改而改变,即a0.那么也许a0用于哈希计算的id?被a0莫名其妙地认为是不可变的?python如何知道类型是否可变?

现在考虑这个案例

b = (1, 2)
id(b)  # 3980742764
c = (1, 2)
id(c)  # 3980732588
tb = (1, b)
tc = (1, c) 
hash(tb)  # -1383040070
hash(tc)  # -1383040070
Run Code Online (Sandbox Code Playgroud)

似乎哈希计算的内容bc用于哈希计算.

我该如何理解这些例子?

python hash tuples

29
推荐指数
3
解决办法
5141
查看次数

绘制Matplotlib等高线图的轴线或原点

我想在我的等高线图中使用白色绘制x=0y=0轴.如果这太麻烦了,我想要一个白点来表示原点.

我的等高线图如下所示,下面给出了创建它的代码.

xvec = linspace(-5.,5.,100)                               
X,Y = meshgrid(xvec, xvec)                                
fig = plt.figure(figsize=(6, 4))                      
contourf(X, Y, W,100)                             
plt.colorbar()                                    
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python matplotlib contour

22
推荐指数
1
解决办法
6万
查看次数

如何在matlab中直接创建逻辑矩阵

我到目前为止一直在使用

 a = logical(zeros(10,10))
Run Code Online (Sandbox Code Playgroud)

创建逻辑矩阵.

有没有办法直接创建它?

matlab matrix

22
推荐指数
2
解决办法
2万
查看次数

Python增加了赋值问题

我遇到了有关python增强任务的有趣内容 +=

似乎是自动数据类型转换并不总是a += b如果a是一个'更简单'的数据类型,而a = a + b似乎总是工作

转换完成的情况

a = 1
b = 1j

a = 1
b = 0.5
Run Code Online (Sandbox Code Playgroud)

没有进行转换的情况

from numpy import array
a = array([0, 0 ,0])
b = array([0, 0, 1j])
Run Code Online (Sandbox Code Playgroud)

之后a += b,a仍然是整数矩阵,而不是复数矩阵

我以前认为a += b是相同a = a + b的,它们在底层实现中的区别是什么?

python arrays numbers numpy complex-numbers

15
推荐指数
2
解决办法
4279
查看次数

如何在Django restframework中反转ViewSet的自定义操作的URL

我已经为ViewSet定义了自定义操作

from rest_framework import viewsets

class UserViewSet(viewsets.ModelViewSet):
    @action(methods=['get'], detail=False, permission_classes=[permissions.AllowAny]) 
    def gender(self, request):
        ....
Run Code Online (Sandbox Code Playgroud)

并且以常规方式将视图集注册到url

from django.conf.urls import url, include                                          

from rest_framework import routers                                                 
from api import views                                                              


router = routers.DefaultRouter()                                                   
router.register(r'users', views.UserViewSet, base_name='myuser')                   

urlpatterns = [                                                                    
    url(r'^', include(router.urls)),                                               
]   
Run Code Online (Sandbox Code Playgroud)

该网址/api/users/gender/有效。但是我不知道如何reverse在单元测试中使用它。(我当然可以对此URL进行硬编码,但是从代码中获取它会很好)

根据django文档,以下代码应该工作

reverse('admin:app_list', kwargs={'app_label': 'auth'})
# '/admin/auth/'
Run Code Online (Sandbox Code Playgroud)

但是我尝试了以下方法,但它们不起作用

reverse('myuser-list', kwargs={'app_label':'gender'})
# errors out
reverse('myuser-list', args=('gender',))
# '/api/users.gender'
Run Code Online (Sandbox Code Playgroud)

django-restframework文档中,有一个名为的函数reverse_action。但是,我的尝试没有用

from api.views import UserViewSet
a = UserViewSet()
a.reverse_action('gender') # error out
from …
Run Code Online (Sandbox Code Playgroud)

python django url django-rest-framework

13
推荐指数
2
解决办法
5243
查看次数