最近我开始使用Python3,它缺乏xrange的伤害.
简单的例子:
1) Python2:
from time import time as t
def count():
st = t()
[x for x in xrange(10000000) if x%4 == 0]
et = t()
print et-st
count()
Run Code Online (Sandbox Code Playgroud)
2) Python3:
from time import time as t
def xrange(x):
return iter(range(x))
def count():
st = t()
[x for x in xrange(10000000) if x%4 == 0]
et = t()
print (et-st)
count()
Run Code Online (Sandbox Code Playgroud)
结果分别是:
1) 1.53888392448 2) 3.215819835662842
这是为什么?我的意思是,为什么xrange被删除了?这是一个很好的学习工具.对于初学者,就像我一样,就像我们所有人一样.为什么删除它?有人能指出我正确的PEP,我找不到它.
干杯.
我有一个名为checker(nums)的函数,它有一个参数,稍后会收到一个列表.我想对该列表做的是检查每个其他元素是否大于或等于前一个元素.示例:我有一个列表[1, 1, 2, 2, 3],我必须检查它是否满足条件.既然如此,函数应该返回True
我的代码:
def checker(nums):
for x in range(len(nums)):
if x+1<len(nums):
if nums[x] <= nums[x+1] and nums[-1] >= nums[-2]:
return True
Run Code Online (Sandbox Code Playgroud)
这将只运行一次,如果第一个条件为真,则返回True.我已经看过一个声明,如果所有并且不确定如何使用它.
可能重复:
检查列表是否已排序的Pythonic方法
在python中,如何测试数字列表是否已经排序?
我在python中编写了这个程序,看看列表是否正在升序而且它不起作用,有人可以帮助我吗?
list1 = [1, 2, 3, 4]
print (list1)
length = len(list1)
run_started = False
for x in range(length - 1):
t = list1[x + 1] - list1[x]
if t > 0 :
if run_started:
run_length = x
else:
run_started = True
run_length = x
else:
if run_started:
print (True)
print ("Run Length: {0}".format(run_length))
break
if not run_started:
print (False)
Run Code Online (Sandbox Code Playgroud) 注意:这不是重复的问题,因为标题可能会说
如果我有一个list列表,则需要从中获取所有组合并进行替换。
import itertools
l = [[1,2,3] ,[1,2,3], [1,2,3]]
n = []
for i in itertools.product(*l):
if sorted(i) not in n:
n.append(sorted(i))
for i in n:
print(i)
[1, 1, 1]
[1, 1, 2]
[1, 1, 3]
[1, 2, 2]
[1, 2, 3]
[1, 3, 3]
[2, 2, 2]
[2, 2, 3]
[2, 3, 3]
[3, 3, 3]
Run Code Online (Sandbox Code Playgroud)
感谢@RoadRunner和@Idlehands。
上面的代码完美,有两个问题:
对于较大的列表,itertools.product引发MemoryError。当l具有18个3个长度的子列表时,给出的合并数约为4亿。
订单很重要,因此sorted无法解决我的问题。对于某些人可能会造成混淆,因此请在下面的示例中进行说明。
l = [[1,2,3], [1], [1,2,3]]
在这里,我有2个独特的群组:
组1:元素0、2具有相同的值[1,2,3]
第2组:元素1,其值为[1]
因此,我需要的解决方案是:
[1,1,1]
[1,1,2]
[1,1,3]
[2,1,2]
[2,1,3]
[3,1,3]
Run Code Online (Sandbox Code Playgroud)
因此位置1 …
我一直在尝试这些代码,但有一些错误.我只想知道第一个字符串是否按字母顺序排列.
def alp(s1):
s2=sorted(s1)
if s2 is s1:
return True
else:
return False
Run Code Online (Sandbox Code Playgroud)
这总是打印False,当我说打印s1或s2时,它说"NameError:name's1'未定义"
python ×6
list ×2
sorting ×2
combinations ×1
if-statement ×1
pep ×1
python-3.x ×1
string ×1
xrange ×1