使用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)
我正在寻找一个行为与第一个类似的排序函数.
我遇到了一些代码类似的代码
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内置数据类型,除此之外None:
>>> not foo > None
True
Run Code Online (Sandbox Code Playgroud)
foo这个类型的值在哪里?Python 3怎么样?
我熟悉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)
当我添加两个参数时,它们被连接而不是两个值被加在一起.似乎这些值被视为字符串.
我怎样才能将它们解释为数字?
我发现列表大于数字.
>>> [1,2,3] > 1000
True
Run Code Online (Sandbox Code Playgroud)
这有什么原因吗?我无法将列表转换为int int([1,2,3]).int无法转换为带有的列表list(1000).那么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) 有人可以解释我两者之间的差异.那些通常是等价的吗?也许我在这里完全错了,但我认为每个比较运算符都必然与一个"丰富的比较"方法有关.这来自文档:
运算符符号和方法名称之间的对应关系如下:
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文档声明,当使用多个参数调用时,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 ×10
python-2.7 ×3
python-3.x ×3
argv ×1
if-statement ×1
logic ×1
max ×1
numpy ×1
operators ×1
python-2.x ×1
sorting ×1