相关疑难解决方法(0)

Python是否具有用于字符串自然排序的内置函数?

使用Python 3.x,我有一个字符串列表,我想对其执行自然的字母排序.

自然排序: Windows中文件的排序顺序.

例如,以下列表是自然排序的(我想要的):

['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
Run Code Online (Sandbox Code Playgroud)

这是上面列表的"排序"版本(我有):

['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个行为与第一个类似的排序函数.

python sorting python-3.x

249
推荐指数
9
解决办法
8万
查看次数

Python中x [x <2] = 0的含义是什么?

我遇到了一些代码类似的代码

x[x<2]=0
Run Code Online (Sandbox Code Playgroud)

玩弄各种变化,我仍然坚持这种语法的作用.

例子:

>>> x = [1,2,3,4,5]
>>> x[x<2]
1
>>> x[x<3]
1
>>> x[x>2]
2
>>> x[x<2]=0
>>> x
[0, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

python numpy python-2.7

84
推荐指数
5
解决办法
1万
查看次数

一切都比无?

是否有Python内置数据类型,除此之外None:

>>> not foo > None
True
Run Code Online (Sandbox Code Playgroud)

foo这个类型的值在哪里?Python 3怎么样?

python python-datamodel python-3.x

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

38
推荐指数
2
解决办法
2990
查看次数

有Python语言规范吗?

Python中有什么类似于Java的JLS或C#的规范吗?

python specifications

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

在python中作为命令行参数传递的数字不会被解释为整数

我熟悉C,并开始在python中进行实验.我的问题是关于sys.argv命令.我已经读过它用于命令行解释器,但是当我尝试执行一个简单的程序时,我没有得到我期望的结果.

码:

import sys

a = sys.argv[1]
b = sys.argv[2]

print a, b

print a+b
Run Code Online (Sandbox Code Playgroud)

输入:

python mySum.py 100 200
Run Code Online (Sandbox Code Playgroud)

输出:

100 200
100200
Run Code Online (Sandbox Code Playgroud)

当我添加两个参数时,它们被连接而不是两个值被加在一起.似乎这些值被视为字符串.

我怎样才能将它们解释为数字?

python argv

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

Python列表大于数字

我发现列表大于数字.

>>> [1,2,3] > 1000
True
Run Code Online (Sandbox Code Playgroud)

这有什么原因吗?我无法将列表转换为int int([1,2,3]).int无法转换为带有的列表list(1000).那么python如何比较两者呢?

python python-2.7

20
推荐指数
2
解决办法
2621
查看次数

大于小于,python

我正在做一个排名类型的事情,发生的事情是我将得分与当前得分进行比较,如果得分低于当前,那么玩家获得了高分,但在此处使用此代码时

        print "Score = " + str(score) + ", Compared to = " + str(array[x])
        if score < array[x]:
                #Do stuff here
Run Code Online (Sandbox Code Playgroud)

但即使得分为4且数组[x]为2,if语句仍然完成?

难道我做错了什么?

我的理解是,如果得分4和数组[x]是2,则4大于2,这意味着它返回False?


下面是完整的代码

def getRank(array, score):
    rank = 0
    rankSet = False
    for x in range(0, len(array)):
        print "Score = " + str(score) + ", Compared to = " + str(array[x])
        if score < array[x]:
            if not rankSet:
                rank = x
                print "Set rank to: " + str(rank)
                rankSet = True
        elif score == array[x] or score …
Run Code Online (Sandbox Code Playgroud)

python if-statement

12
推荐指数
1
解决办法
13万
查看次数

比较运算符与Python中的"丰富比较"方法

有人可以解释我两者之间的差异.那些通常是等价的吗?也许我在这里完全错了,但我认为每个比较运算符都必然与一个"丰富的比较"方法有关.这来自文档:

运算符符号和方法名称之间的对应关系如下:

x<y电话x.__lt__(y),x<=y电话x.__le__(y),x==y电话x.__eq__(y),x!=y电话x.__ne__(y),x>y电话x.__gt__(y)x>=y电话x.__ge__(y).

这是一个展示我困惑的例子.

Python 3.x:

dict1 = {1:1}
dict2 = {2:2}

>>> dict1 < dict2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'dict' and 'dict'
>>> dict1.__lt__(dict2)
NotImplemented
Run Code Online (Sandbox Code Playgroud)

Python 2.x:

dict1 = {1:1}
dict2 = {2:2}

>>> dict1 < dict2
True
>>> dict1.__lt__(dict2) …
Run Code Online (Sandbox Code Playgroud)

python comparison-operators python-2.7 python-3.x

12
推荐指数
1
解决办法
2729
查看次数

最多两个元组

Python文档声明,当使用多个参数调用时,max()返回最大的参数.

>>> a = (1, 1, 1, 9)
>>> b = (4, 5, 6)
>>> max(a, b)
(4, 5, 6)
Run Code Online (Sandbox Code Playgroud)

什么定义了如何元组,在这种情况下,是什么?元组a具有更多数量的元素(四个对三个),并且其最大值(9)大于可以在b(6)中找到的最大数量,因此根据任何标准,我预期它将是回来了.如何通过max()比较元组?

python max

11
推荐指数
1
解决办法
4063
查看次数