जवाबों:
का उपयोग करें range
। पायथन 2.x में यह एक सूची देता है, जिसकी आपको आवश्यकता है:
>>> range(11, 17)
[11, 12, 13, 14, 15, 16]
पायथन 3.x range
में एक पुनरावृत्त है। तो, आपको इसे सूची में बदलने की आवश्यकता है:
>>> list(range(11, 17))
[11, 12, 13, 14, 15, 16]
नोट : दूसरा नंबर अनन्य है। तो, यहाँ यह होना चाहिए 16+1
=17
संपादित करें:
द्वारा वेतन वृद्धि के बारे में पूछे गए सवाल का जवाब देने के लिए 0.5
, सबसे आसान विकल्प शायद खसखस का उपयोग करना होगा arange()
और .tolist()
:
>>> import numpy as np
>>> np.arange(11, 17, 0.5).tolist()
[11.0, 11.5, 12.0, 12.5, 13.0, 13.5,
14.0, 14.5, 15.0, 15.5, 16.0, 16.5]
step
पैरामीटर के साथ 1 से अधिक की वृद्धि कर सकते हैं, लेकिन यह अभी भी एक इंट - फ्लोट नहीं है। आप बिल्कुल ऐसा नहीं कर सकते मानक मान में।
आप के लिए लग रहे हो range()
:
>>> x1=11
>>> x2=16
>>> range(x1, x2+1)
[11, 12, 13, 14, 15, 16]
>>> list1 = range(x1, x2+1)
>>> list1
[11, 12, 13, 14, 15, 16]
इसके 0.5
बजाय वेतन वृद्धि के लिए 1
, कहें:
>>> list2 = [x*0.5 for x in range(2*x1, 2*x2+1)]
>>> list2
[11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5, 15.0, 15.5, 16.0]
list
एक चर के रूप में उपयोग करते हैं ।
list
में एक अंतर्निहित वर्ग है, इसलिए एक चर के रूप में इसका उपयोग कुछ हद तक हतोत्साहित किया जाता है
प्रयत्न:
range(x1,x2+1)
वह पायथन 2.x में एक सूची है और अधिकतर पायथन 3.x में एक सूची की तरह व्यवहार करता है। यदि आप पायथन 3 चला रहे हैं और आपको एक सूची की आवश्यकता है जिसे आप संशोधित कर सकते हैं, तो उपयोग करें:
list(range(x1,x2+1))
यदि आप फ़ंक्शन जैसी श्रेणी की तलाश कर रहे हैं जो फ्लोट प्रकार के लिए काम करता है, तो यहां एक बहुत अच्छा लेख है ।
def frange(start, stop, step=1.0):
''' "range()" like function which accept float type'''
i = start
while i < stop:
yield i
i += step
# Generate one element at a time.
# Preferred when you don't need all generated elements at the same time.
# This will save memory.
for i in frange(1.0, 2.0, 0.5):
print i # Use generated element.
# Generate all elements at once.
# Preferred when generated list ought to be small.
print list(frange(1.0, 10.0, 0.5))
आउटपुट:
1.0
1.5
[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5]
अजगर में सूची समझ का उपयोग करें। चूंकि आप सूची में 16 भी चाहते हैं .. x2 + 1 का उपयोग करें। रेंज फ़ंक्शन फ़ंक्शन में उच्च सीमा को बाहर करता है।
सूची = [x के लिए x श्रेणी में (X1, x2 + 1)]
range()
कोई सूची समझने की आवश्यकता का उपयोग नहीं करते हैं
list(range(x1, x2+1))
:।
अजगर में आप यह बहुत उत्सुकता से कर सकते हैं
start=0
end=10
arr=list(range(start,end+1))
output: arr=[0,1,2,3,4,5,6,7,8,9,10]
या आप एक पुनरावर्ती फ़ंक्शन बना सकते हैं जो किसी दिए गए नंबर तक एक सरणी देता है:
ar=[]
def diff(start,end):
if start==end:
d.append(end)
return ar
else:
ar.append(end)
return diff(start-1,end)
आउटपुट: ar = [10,9,8,7,6,5,4,3,2,1,0]
ऐसा करने का सबसे सुंदर तरीका range
फ़ंक्शन का उपयोग करना है, लेकिन यदि आप इस तर्क को फिर से बनाना चाहते हैं तो आप इस तरह से कुछ कर सकते हैं:
def custom_range(*args):
s = slice(*args)
start, stop, step = s.start, s.stop, s.step
if 0 == step:
raise ValueError("range() arg 3 must not be zero")
i = start
while i < stop if step > 0 else i > stop:
yield i
i += step
>>> [x for x in custom_range(10, 3, -1)]
यह उत्पादन का उत्पादन करता है:
[10, 9, 8, 7, 6, 5, 4]
के रूप में @Jared से पहले व्यक्त की, सबसे अच्छा तरीका है का उपयोग करना है range
या numpy.arrange
फिर भी मुझे लगता है कोड दिलचस्प साझा करने के लिए।
[x for x in range(10, 3, 1)]
- पहला तर्क है शुरुआत, दूसरा अंत और अंतिम चरण। ==> स्टॉप> स्टार्ट
प्रत्येक श्रेणी के ऊपर का उत्तर केवल सकारात्मक संख्याओं का है। यहां वैकल्पिक संख्या मान (डिफ़ॉल्ट = 1) सेट करने की संभावना के साथ लगातार संख्याओं की सूची वापस करने का समाधान है जहां तर्क कोई भी (सकारात्मक या नकारात्मक) हो सकते हैं।
def any_number_range(a,b,s=1):
""" Generate consecutive values list between two numbers with optional step (default=1)."""
if (a == b):
return a
else:
mx = max(a,b)
mn = min(a,b)
result = []
# inclusive upper limit. If not needed, delete '+1' in the line below
while(mn < mx + 1):
# if step is positive we go from min to max
if s > 0:
result.append(mn)
mn += s
# if step is negative we go from max to min
if s < 0:
result.append(mx)
mx += s
return result
उदाहरण के लिए, मानक कमांड list(range(1,-3))
खाली सूची देता है []
, जबकि यह फ़ंक्शन वापस आ जाएगा[-3,-2,-1,0,1]
अपडेट किया गया : अब कदम नकारात्मक हो सकता है। धन्यवाद @Michael उनकी टिप्पणी के लिए।
i_min = -3, i_max = 1
any_number_range(i_max, i_min))
रिटर्न है [-3,-2,-1,0,1]
, लेकिन, बिलिन list(range(i_min, i_max + 1))
समान मान लौटाएगा।
list(range(1,-3, -1))