pythonsizelist
❶ python如何申請超大二維矩陣
我試著跑了一下,也是報內存錯誤,原因就是內存不夠,你可以試試使用numpy模塊看看,然後運行numpy.zeros((43373 x 43373)),查看是否會報錯array is too big,如果是這樣說明你內存不夠
❷ python如何統計列表的長度
參考代碼:
list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c"];
len(list1)
len(list2)
len(list3)
Python支持列表切割(list slices),可以取得完整列表的一部分。支持切割操作的類型有str, bytes, list, tuple等。它的語法是...[left:right]或者...[left:right:stride]。假定nums變數的值是[1, 3, 5, 7,],那麼下面幾個語句為真:
nums[2:5] == [5, 7] 從下標為2的元素切割到下標為5的元素,但不包含下標為5的元素。
nums[1:] == [3, 5, 7] 切割到最後一個元素。
nums[:-3] == [1, 3, 5, 7] 從最開始的元素一直切割到倒數第3個元素。
nums[:] == [1, 3, 5, 7] 返回所有元素。改變新的列表不會影響到nums。
nums[1:5:2] == [3, 7] 從下標為1的元素切割到下標為5的元素但不包含下標為5的元素,且步長為2。
(2)pythonsizelist擴展閱讀:
Python 是一門有條理的和強大的面向對象的程序設計語言,類似於Perl, Ruby, Scheme, java。
Python在設計上堅持了清晰劃一的風格,這使得Python成為一門易讀、易維護,並且被大量用戶所歡迎的、用途廣泛的語言。
設計者開發時總的指導思想是,對於一個特定的問題,只要有一種最好的方法來解決就好了。這在由Tim Peters寫的Python格言(稱為The Zen of Python)裡面表述為:There should be one-- and preferably only one --obvious way to do it. 這正好和Perl語言(另一種功能類似的高級動態語言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。
Python的作者有意的設計限制性很強的語法,使得不好的編程習慣(例如if語句的下一行不向右縮進)都不能通過編譯。其中很重要的一項就是Python的縮進規則。
❸ python list 為什麼有近乎無限大小的空間
跟C++里的vector原理差不多,當長度不夠時動態增加。
❹ 為什麼Python list的索引從0開始
如果你的l是如此定義的
List l=new ArrayList();
那麼拋出此異常是非常正確的!因為java到源碼如下:
public void add(int index, E element) {
if (index > size || index < 0)
throw new IndexOutOfBoundsException(
"Index: "+index+", Size: "+size);
//你的程序就符合index>size,所以就拋出IndexOutOfBoundsException
ensureCapacity(size+1); // Increments modCount!!
System.array(elementData, index, elementData, index + 1,
size - index);
elementData[index] = element;
size++;
}
❺ 求助,python的list轉換為Java的ArrayList-CSDN論壇
#-*-coding:utf-8-*-
fromjava.utilimportArrayList
#JavaArrayList轉Pythonlist
defCovertJlistToPlist(jList):
ret=[]
ifjListisNone:
returnret
foriinrange(jList.size()):
ret.append(str(jList.get(i)))
returnret
#Pythonlist轉JavaArrayList
defCovertPlistTOJlist(pList):
ret=ArrayList()
foriinrange(len(pList)):
ret.add(i)
returnret
如果解決了您的問題請採納!
如果未解決請繼續追問
❻ Python中dict為什麼比list浪費內存求大神,感激不盡!!
可以翻閱python源碼:
https://www.python.org/downloads/source/
List:
typedefstruct{
PyObject_VAR_HEAD
/*.list[0]isob_item[0],etc.*/
PyObject**ob_item;
/*ob_itemcontainsspacefor'allocated'elements.Thenumber
*currentlyinuseisob_size.
*Invariants:
*0<=ob_size<=allocated
*len(list)==ob_size
*ob_item==NULLimpliesob_size==allocated==0
*list.sort()temporarilysetsallocatedto-1todetectmutations.
*
*ItemsmustnormallynotbeNULL,exceptringconstructionwhen
*.
*/
Py_ssize_tallocated;
}PyListObject;
Dict:
/*PyDict_.Thismanyslotsare
*(inthema_smalltablemember).
*Itmustbeapowerof2,andatleast4.8allowsdictswithnomore
*than5activeentriestoliveinma_smalltable(andsoavoidan
*additionalmalloc);
*majorityofdicts(consistingmostlyofusually-smallinstancedictsand
*usually-).
*/
#definePyDict_MINSIZE8
typedefstruct{
/*Cachedhashcodeofme_key.NotethathashcodesareClongs.
*WehavetousePy_ssize_tinsteadbecausedict_popitem()abuses
*me_hashtoholdasearchfinger.
*/
Py_ssize_tme_hash;
PyObject*me_key;
PyObject*me_value;
}PyDictEntry;
/*
,theremustbeatleastoneUnused
slot(NULLkey)inthetable.
Thevaluema_fillisthenumberofnon-NULLkeys(sumofActiveandDummy);
ma_usedisthenumberofnon-NULL,non-mmykeys(==thenumberofnon-NULL
values==thenumberofActiveitems).
-fulltable,weresizethetablewhen
it'stwo-thirdsfull.
*/
typedefstruct_dictobjectPyDictObject;
struct_dictobject{
PyObject_HEAD
Py_ssize_tma_fill;/*#Active+#Dummy*/
Py_ssize_tma_used;/*#Active*/
/*Thetablecontainsma_mask+1slots,andthat'sapowerof2.
*
*frequentlyneeded.
*/
Py_ssize_tma_mask;
/*ma_tablepointstoma_smalltableforsmalltables,elseto
*additionalmalloc'edmemory.ma_tableisneverNULL!Thisrule
*savesrepeatedruntimenull-testsintheworkhorsegetitemand
*setitemcalls.
*/
PyDictEntry*ma_table;
PyDictEntry*(*ma_lookup)(PyDictObject*mp,PyObject*key,longhash);
PyDictEntryma_smalltable[PyDict_MINSIZE];
};
PyObject_HEAD:
#ifdefPy_TRACE_REFS
/*-.*/
#define_PyObject_HEAD_EXTRA
struct_object*_ob_next;
struct_object*_ob_prev;
#define_PyObject_EXTRA_INIT0,0,
#else
#define_PyObject_HEAD_EXTRA
#define_PyObject_EXTRA_INIT
#endif
/*PyObject_.*/
#definePyObject_HEAD
_PyObject_HEAD_EXTRA
Py_ssize_tob_refcnt;
struct_typeobject*ob_type;
PyObject_VAR_HEAD:
/*PyObject_VAR_-size
*containerobjects.
*element,butenoughspaceismalloc'edsothatthearrayactually
*hasroomforob_sizeelements.Notethatob_sizeisanelementcount,
*notnecessarilyabytecount.
*/
#definePyObject_VAR_HEAD
PyObject_HEAD
Py_ssize_tob_size;/*Numberofitemsinvariablepart*/
❼ 如何利用Python做簡單的驗證碼識別
先是獲取驗證碼樣本。。。我存了大概500個。
用dia測了測每個字之間的間距,直接用PIL開始切。
from PIL import Image
for j in range(0,500):
f=Image.open("../test{}.jpg".format(j))
for i in range(0,4):
f.crop((20+20*i,0,40+20*i,40)).save("test{0}-{1}.jpg".format(j,i+1))
上面一段腳本的意思是把jpg切成四個小塊然後保存
之後就是二值化啦。
def TotallyShit(im):
x,y=im.size
mmltilist=list()
for i in range(x):
for j in range(y):
if im.getpixel((i,j))<200:
mmltilist.append(1)
else:
mmltilist.append(0)
return mmltilist
咳咳,不要在意函數的名字。上面的一段代碼的意思是遍歷圖片的每個像素點,顏色數值小於200的用1表示,其他的用0表示。
其中的im代表的是Image.open()類型。
切好的圖片長這樣的。
只能說這樣切的圖片還是很粗糙,很僵硬。
下面就是分類啦。
把0-9,「+」,」-「的圖片挑好並放在不同的文件夾裡面,這里就是純體力活了。
再之後就是模型建立了。
這里我試了自己寫的還有sklearn svm和sklearn neural_network。發現最後一個的識別正確率高的多。不知道是不是我樣本問題QAQ。
下面是模型建立的代碼
from sklearn.neural_network import MLPClassifier
import numpy as np
def clf():
clf=MLPClassifier()
mmltilist=list()
X=list()
for i in range(0,12):
for j in os.listdir("douplings/douplings-{}".format(i)):
mmltilist.append(TotallyShit(Image.open("douplings/douplings-{0}/{1}".format(i,j)).convert("L")))
X.append(i)
clf.fit(mmltilist,X)
return clf
大概的意思是從圖片源中讀取圖片和label然後放到模型中去跑吧。
之後便是圖像匹配啦。
def get_captcha(self):
with open("test.jpg","wb") as f:
f.write(self.session.get(self.live_captcha_url).content)
gim=Image.open("test.jpg").convert("L")
recognize_list=list()
for i in range(0,4):
part=TotallyShit(gim.crop((20+20*i,0,40+20*i,40)))
np_part_array=np.array(part).reshape(1,-1)
predict_num=int(self.clf.predict(np_part_array)[0])
if predict_num==11:
recognize_list.append("+")
elif predict_num==10:
recognize_list.append("-")
else:
recognize_list.append(str(predict_num))
return ''.join(recognize_list)
最後eval一下識別出來的字元串就得出結果了。。
順便提一句現在的bilibili登陸改成rsa加密了,麻蛋,以前的腳本全部作廢,心好痛。
登陸的代碼。
import time
import requests
import rsa
r=requests.session()
data=r.get("act=getkey&_="+str(int(time.time()*1000))).json()
pub_key=rsa.PublicKey.load_pkcs1_openssl_pem(data['key'])
payload = {
'keep': 1,
'captcha': '',
'userid': "youruserid",
'pwd': b64encode(rsa.encrypt((data['hash'] +"yourpassword").encode(), pub_key)).decode(),
}
r.post("",data=payload)