当我遇到这个怪癖时,我只是乱搞.我想确保我不疯狂.
以下代码(适用于2.x和3.x):
from timeit import timeit
print ('gen: %s' % timeit('"-".join(str(n) for n in range(1000))', number=10000))
print ('list: %s' % timeit('"-".join([str(n) for n in range(1000)])', number=10000))
Run Code Online (Sandbox Code Playgroud)
在每个版本,同一台机器上运行3次.
注意:我将时间分组在同一行,以节省空间.
在我的Python 2.7.5上:
gen: 2.37875941643, 2.44095773486, 2.41718937347
list: 2.1132466183, 2.12248106441, 2.11737128131
Run Code Online (Sandbox Code Playgroud)
在我的Python 3.3.2上:
gen: 3.8801268438439718, 3.9939604983350185, 4.166233972077624
list: 2.976764740845537, 3.0062614747229555, 3.0734980312273894
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这是....它可能与如何实现字符串有关?
编辑:我没有使用它再次这样做,range()因为它也从2.x略有变化到3.x而是我使用下面的新代码:
from timeit import timeit
print ('gen: %s' % timeit('"-".join(str(n) for n in (1, 2, 3))', number=1000000))
print ('list: %s' % timeit('"-".join([str(n) for n in (1, 2, …Run Code Online (Sandbox Code Playgroud) 我需要将包含内存使用量的字符串1048576(例如:(1M))转换为人类可读的版本,反之亦然.
注意:我已经看过这里了: 可重用的库,以获得文件大小的人类可读版本?
在这里(即使它不是python): 如何将人类可读的内存大小转换为字节?
到目前为止没有什么能帮助我,所以我在其他地方看了
我在这里找到了一些可以解决此问题的内容:http://code.google.com/p/pyftpdlib/source/browse/trunk/test/bench.py?specpec = swn984&r = 984#137,或者,对于较短的网址:http://goo.gl/zeJZl
代码:
def bytes2human(n, format="%(value)i%(symbol)s"):
"""
>>> bytes2human(10000)
'9K'
>>> bytes2human(100001221)
'95M'
"""
symbols = ('B', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
prefix = {}
for i, s in enumerate(symbols[1:]):
prefix[s] = 1 << (i+1)*10
for symbol in reversed(symbols[1:]):
if n >= prefix[symbol]:
value = float(n) / prefix[symbol]
return format % locals()
return format % dict(symbol=symbols[0], value=n)
Run Code Online (Sandbox Code Playgroud)
还有一个转换功能(相同的网站):
def human2bytes(s): …Run Code Online (Sandbox Code Playgroud) 我是新手python,刚刚安装Eric6 我想要搜索一个文件夹(和所有子目录)来打印任何扩展名为.pdf I 的文件的文件名作为我的语法,但它错误说
调试程序引发异常未处理的FileNotFoundError
"[WinError 3]系统找不到指定的路径'C:'"
文件:C:\ Users\pcuser\EricDocs\Test.py,Line:6
这是我想要执行的语法:
import os
results = []
testdir = "C:\Test"
for folder in testdir:
for f in os.listdir(folder):
if f.endswith('.pdf'):
results.append(f)
print (results)
Run Code Online (Sandbox Code Playgroud) 我正在尝试.tar.gz使用SharpZipLib从文件夹中找到文件列表.问题是无论如何传递文件路径 - 结果总是包含文件路径 - 而不仅仅是文件自身.我在这里失踪了什么?
string filesFolder = "c:\\testfolder\\test\\";
List<string> filesToZip = new List<string>() { filesFolder +"test1", filesFolder +"test2"};
using (FileStream fs = new FileStream(filesFolder +"myGz.tar.gz" , FileMode.Create, FileAccess.Write, FileShare.None))
using (Stream gzipStream = new GZipOutputStream(fs))
using (TarArchive tarArchive = TarArchive.CreateOutputTarArchive(gzipStream))
{
foreach (string filename in filesToZip )
{
{
TarEntry tarEntry = TarEntry.CreateEntryFromFile(filename);
tarArchive.WriteEntry(tarEntry, false);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的是一个"myGz.tar.gz"文件.当我尝试用7.zip打开它时 - 我在存档中获得完整的文件夹结构--c:\ testfolder\test \,并在其中 - "test1","test".
如何删除文件路径?
谢谢
我正在寻找一种解决方案来找到Python中两个字典之间的对称差异.
例如,如果我有两个字典A和B,并且我想创建第三个字典C,其中包含A和B中未在另一个中找到的所有项目,或者换句话说,唯一的.
我找不到规范的答案,所以我决定打开这个问题并给出我自己的答案.如果你认为你有更好的方法,我很乐意看到它.
一些数据:
a = {'a': 1, 'b':2}
b = {'b': 2, 'c':3}
Run Code Online (Sandbox Code Playgroud)
期望的输出:
{'a': 1, 'c': 3}
Run Code Online (Sandbox Code Playgroud) 设计不会重定向到提供的网址after_sign_in_path_for.它实际上调用我的自定义after_sign_in_path_for.它会计算我希望它计算的url,但之后不会发生重定向.它保留在sign_in页面上,但实际登录不会发生.
我一直在尝试几个版本的设计:
gem 'devise'
Run Code Online (Sandbox Code Playgroud)
和
gem 'devise', :git => 'git://github.com/plataformatec/devise.git'
Run Code Online (Sandbox Code Playgroud)
结果相同.
我的习惯 after_sign_in_path_for
def after_sign_in_path_for(resource)
str = stored_location_for(resource) || stored_location || root_path
debugger
str
end
def stored_location
session.delete(:return_to)
end
def store_location
session[:return_to] = request.fullpath
end
Run Code Online (Sandbox Code Playgroud)
正在被调用,它提供了正确的URL,str完全按照我的预期给出.调试器此时停止...
但是在cont页面停留之后sign_in,然而登录仍在进行.
我相信这不是我的代码问题.这可能是一个设计问题.能有它工作的任何人都可以与我分享Devise的确切版本,它与你合作.
我有这样的一系列数字
myvar = [57, 71, 87, 97, 99, 101, 103, 113, 114, 115, 128, 129, 131, 137, 147, 156, 163, 186]
Run Code Online (Sandbox Code Playgroud)
现在我想计算所有这些可能的组合(长度为1到20),其总和等于给定的数字m.
我尝试使用以下代码解决:
def sum_count(m): ## Where m is the sum required
from itertools import combinations
myseq = []
for i in range(1,len(myvar)):
mycomb = list(combinations(mass,i)); # Getting combinations of length i
mycomb = [list(j) for j in mycomb];
for j in range(len(mycomb)-1,-1,-1):
if sum(mycomb[j]) == m:
myseq.append(mycomb[j])
return(myseq)
Run Code Online (Sandbox Code Playgroud)
当我放m = 270(例如)它给我:
[[114, 156], [57, 99, …Run Code Online (Sandbox Code Playgroud) 我想要做的是能够调用多个线程的函数并获得他们的结果.
我有以下代码:
(这是一个例子,实际代码不是简单地将str转换为int)
from threading import Thread
import time
import Queue
#an example - actual code connects to a server
def str_to_int(arg, queue):
result = 0
result = int(arg)
#sleep to check that they happen at once.
time.sleep(10)
queue.put(result)
def combine():
q1 = Queue.Queue()
q2 = Queue.Queue()
q3 = Queue.Queue()
t1 = Thread(target = str_to_int, args=("111", q1))
t2 = Thread(target = str_to_int, args=("222", q2))
t3 = Thread(target = str_to_int, args=("333", q3))
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()
return (q1.get(),q2.get(),q3.get())
print …Run Code Online (Sandbox Code Playgroud) 我是Python的初学者.
我不懂Python函数描述.例如,功能getopt
getopt.getopt(args, options[, long_options])
Run Code Online (Sandbox Code Playgroud)
什么options[, long_options]意思?
这可能是不可能的,但如果是的话,我写的一些代码会很方便:
ListOne = ['jumps', 'over', 'the']
ListTwo = ['The', 'quick', 'brown', 'fox', ListOne, 'lazy', 'dog!']
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我最终会将ListOne作为ListTwo中的一个列表.
但相反,我想将ListOne扩展为ListTwo,但我不想做以下事情:
ListOne = ['jumps', 'over', 'the']
ListTwo = ['The', 'quick', 'brown', 'fox']
ListTwo.extend(ListOne)
ListTwo.extend(['lazy', 'dog!']
Run Code Online (Sandbox Code Playgroud)
这将有效,但它不像上面的代码那样可读.
这可能吗?
python ×8
python-2.7 ×2
python-3.x ×2
.net ×1
c# ×1
combinations ×1
converter ×1
devise ×1
dictionary ×1
function ×1
list ×1
memory ×1
queue ×1
set ×1
sharpziplib ×1