range()
ඇත්ත වශයෙන්ම පයිතන් 3 හි වස්තු වර්ගයක් වන ශ්රිතය උත්පාදක යන්ත්රයකට සමාන මැස්සන් මත එහි අන්තර්ගතය ජනනය කරන බව මගේ වැටහීමයි .
තත්වය එසේ නම්, පහත දැක්වෙන රේඛාවට අනවශ්ය කාලයක් ගතවනු ඇතැයි මම අපේක්ෂා කළෙමි, මන්ද චතුරස්රාකාර 1 ක් පරාසයේ තිබේද යන්න තීරණය කිරීම සඳහා, චතුරස්රාකාර අගයන් ජනනය කළ යුතු බැවිනි:
1000000000000000 in range(1000000000000001)
තව දුරටත්: මම කොපමණ ශුන්ය එකතු කළත්, ගණනය කිරීම වැඩි හෝ අඩු වශයෙන් එකම කාලයක් ගතවන බව පෙනේ (මූලික වශයෙන් ක්ෂණික).
මමත් මේ වගේ දේවල් අත්හදා බැලුවා, නමුත් ගණනය කිරීම තවමත් ක්ෂණිකයි:
1000000000000000000000 in range(0,1000000000000000000001,10) # count by tens
මම මගේ පරාසයේ ශ්රිතය ක්රියාත්මක කිරීමට උත්සාහ කළහොත්, ප්රති result ලය එතරම් යහපත් නොවේ !!
def my_crappy_range(N):
i = 0
while i < N:
yield i
i += 1
return
මොකක්ද මේ range()
එය එසේ වේගයෙන් කරවන ඒ අවටනම් යටතේ කරන්නේ වස්තුව?
මාර්ටින් පීටර්ස්ගේ පිළිතුර එහි සම්පූර්ණත්වය සඳහා තෝරාගෙන ඇති අතර, පයිතන් 3 හි පූර්ණ අනුක්රමයක් වීම යන්නෙන් අදහස් කරන්නේ කුමක්ද යන්න පිළිබඳ හොඳ සාකච්ඡාවක් සඳහා ඇබර්නර්ට්ගේ පළමු පිළිතුර ද බලන්න , සහ පයිතන් ක්රියාත්මක කිරීම් හරහා ක්රියාකාරී ප්රශස්තිකරණය සඳහා ඇති විය හැකි නොගැලපීම් පිළිබඳ සමහර තොරතුරු / අනතුරු ඇඟවීම් ද බලන්න. . abarnert ගේ අනෙක් පිළිතුර තවත් සවිස්තරාත්මකව ගොස් පයිතන් 3 හි ප්රශස්තිකරණය පිටුපස ඇති ඉතිහාසය ගැන උනන්දුවක් දක්වන අයට සබැඳි සපයයි (සහ පයිතන් 2 හි ප්රශස්තිකරණය නොමැති වීම ). පිළිතුරු පැම්ණ විසින් හා wim විසින් කැමැත්තක් දක්වන අය සඳහා අදාළ සී මූල කේතය හා පැහැදිලි කිරීම් ලබා දීම.range
__contains__
xrange
range
ජනක යන්ත්රයක් යැයි ඔබට කීවේ කවුද ?
xrange
Python3 සමානrange
?
xrange()
වස්තූන්ට __contains__
ක්රමයක් නැත , එබැවින් අයිතම පරීක්ෂාවට සියලු අයිතම හරහා ලූප විය යුතුය. ප්ලස් range()
කැපීමට සහය දක්වයි (එය නැවත range
වස්තුවක් ආපසු ලබා දෙයි ) සහ දැන් ඒබීසී සමඟ අනුකූල වීමට ක්රම count
සහ index
ක්රම වැනි තවත් වෙනස්කම් කිහිපයක් තිබේ collections.Sequence
.
bool
හෝlong
වර්ගයක් නම් පමණි, වෙනත් වස්තු වර්ග සමඟ එය පිස්සු වැටෙනු ඇත. උත්සාහ කරන්න:100000000000000.0 in range(1000000000000001)