পাইথনে আমি কীভাবে অ্যারে ঘোষণা করব ?
ডকুমেন্টেশনে অ্যারে সম্পর্কিত কোনও রেফারেন্স খুঁজে পাচ্ছি না।
__getitem__
ও (1) হবে না।
পাইথনে আমি কীভাবে অ্যারে ঘোষণা করব ?
ডকুমেন্টেশনে অ্যারে সম্পর্কিত কোনও রেফারেন্স খুঁজে পাচ্ছি না।
__getitem__
ও (1) হবে না।
উত্তর:
variable = []
এখন variable
খালি তালিকা * বোঝায় ।
অবশ্যই এটি একটি অ্যাসাইনমেন্ট, কোনও ঘোষণা নয়। পাইথনটি বলার উপায় নেই যে "এই পরিবর্তনশীলটি কখনই তালিকা ব্যতীত অন্য কোনও কিছুকে উল্লেখ করা উচিত নয়", যেহেতু পাইথন গতিশীলভাবে টাইপ করা হয়।
* পাইথন-এর পূর্বনির্ধারিত টাইপটিকে অ্যারে নয়, তালিকা বলে । এটি স্বেচ্ছাসেবী দৈর্ঘ্যের একটি অর্ডারযুক্ত ধারক যা বস্তুর বিজাতীয় সংগ্রহ ধরে রাখতে পারে (তাদের ধরণের কোনও বিষয় নয় এবং অবাধে মিশ্রিত হতে পারে)। এটি array
মডিউলের সাথে বিভ্রান্ত হওয়া উচিত নয় , যা সি array
টাইপের আরও কাছাকাছি একটি প্রস্তাব দেয় ; বিষয়বস্তু অবশ্যই একজাতীয় হতে হবে (একই ধরণের সমস্ত) তবে দৈর্ঘ্যটি এখনও গতিশীল।
variable = ["Hi", "Hello"];
?)
my_2x2_list = [[a, b], [c, d]]
। আপনার জন্য বহুমাত্রিক অ্যারেগুলির প্রয়োজনের উপর নির্ভর করে আপনি হয়ত ব্যবহারের বিষয়টি বিবেচনা করতে পারেন numpy
, যা বহুমাত্রিক, সমজাতীয়, আনবক্সেড অ্যারেগুলির জন্য অ্যারের প্রকারগুলি সংজ্ঞায়িত করে যেখানে প্রযোজ্য ক্ষেত্রে আরও কার্যকর হতে পারে, তাই তারা সংখ্যার গণনার জন্য পছন্দনীয়।
পাইথনের এটি আশ্চর্যজনকভাবে জটিল বিষয়।
অ্যারেগুলি শ্রেণি দ্বারা প্রতিনিধিত্ব করা হয় list
( রেফারেন্স দেখুন এবং জেনারেটরের সাথে তাদের মিশ্রণ করবেন না )।
ব্যবহারের উদাহরণগুলি দেখুন:
# empty array
arr = []
# init with values (can contain mixed types)
arr = [1, "eels"]
# get item by index (can be negative to access end of array)
arr = [1, 2, 3, 4, 5, 6]
arr[0] # 1
arr[-1] # 6
# get length
length = len(arr)
# supports append and insert
arr.append(8)
arr.insert(6, 7)
হুডের নীচে পাইথন list
হ'ল একটি আসল অ্যারের জন্য একটি মোড়ক যা আইটেমের উল্লেখ রয়েছে। এছাড়াও, অন্তর্নিহিত অ্যারে কিছু অতিরিক্ত স্থান দিয়ে তৈরি করা হয়।
এর ফলাফলগুলি হ'ল:
arr[6653]
একই arr[0]
)append
অপারেশনটি 'ফ্রি'র জন্য রয়েছে যখন কিছু অতিরিক্ত জায়গাinsert
অপারেশন ব্যয়বহুলঅপারেশন জটিলতার এই দুর্দান্ত টেবিলটি দেখুন ।
এছাড়াও, দয়া করে এই ছবিটি দেখুন, যেখানে আমি অ্যারে, রেফারেন্সের অ্যারে এবং লিঙ্কযুক্ত তালিকার মধ্যে সবচেয়ে গুরুত্বপূর্ণ পার্থক্য দেখানোর চেষ্টা করেছি:
[1, 2, 3, 4, 5, 6, 7, 8, 9][1:-2]
[2, 3, 4, 5, 6, 7]
a == b[:2]
আয় যদি সত্য হয় প্রথম 2 উপাদান খ অ্যারের মান সমান একটি
আপনি আসলে জিনিসগুলি ঘোষণা করেন না, তবে পাইথনে আপনি এভাবে অ্যারে তৈরি করেন:
from array import array
intarray = array('i')
আরও তথ্যের জন্য অ্যারে মডিউলটি দেখুন: http://docs.python.org/library/array.html
এখন সম্ভব আপনি একটি অ্যারে, কিন্তু একটি তালিকা চান না, তবে অন্যরা ইতিমধ্যে ইতিমধ্যে উত্তর দিয়েছে। :)
list
। পাইথনের একটি বিশেষ-উদ্দেশ্যযুক্ত ডেটা টাইপ রয়েছে array
যা একটি সি অ্যারের মতোই এবং খুব কম ব্যবহৃত হয়।
আমি মনে করি আপনি ইতিমধ্যে ভরাট 30 টি সেল সহ একটি তালিকা চান (বোঝানো)। সুতরাং
f = []
for i in range(30):
f.append(0)
এটি কোথায় ব্যবহার করা যেতে পারে তার একটি উদাহরণ হ'ল ফিবোনাচি ক্রম। প্রকল্প ইউলারে সমস্যা 2 দেখুন
f = [0] * 30
পরিবর্তে চেষ্টা করুন।
এই হল কিভাবে:
my_array = [1, 'rebecca', 'allard', 15]
গণনার জন্য, এইর মতো নাম্পার অ্যারে ব্যবহার করুন :
import numpy as np
a = np.ones((3,2)) # a 2D array with 3 rows, 2 columns, filled with ones
b = np.array([1,2,3]) # a 1D array initialised using a list [1,2,3]
c = np.linspace(2,3,100) # an array with 100 points beteen (and including) 2 and 3
print(a*1.5) # all elements of a times 1.5
print(a.T+b) # b added to the transpose of a
এই নকল অ্যারেগুলি সংরক্ষণ করা যায় এবং ডিস্ক থেকে লোড করা যায় (এমনকি সংক্ষেপিত) এবং বিপুল পরিমাণে উপাদান সহ জটিল গণনাগুলি সি-এর মতো দ্রুত।
বৈজ্ঞানিক পরিবেশে অনেক বেশি ব্যবহৃত হয়। আরও জন্য এখানে দেখুন।
জনমচিনের মন্তব্যটির আসল উত্তর হওয়া উচিত। অন্য সমস্ত উত্তরগুলি আমার মতে কেবলমাত্র কর্মক্ষেত্র! তাই:
array=[0]*element_count
x=[[0] * 10] * 10
বেশ কয়েকটি অবদানের পরামর্শ দিয়েছিল যে অজগরের অ্যারেগুলি তালিকা দ্বারা উপস্থাপন করা হয়। এটি ভুল। পাইথনের array()
স্ট্যান্ডার্ড লাইব্রেরি মডিউলে array
" array.array()
" এটির একটি স্বাধীন প্রয়োগ রয়েছে তাই দুটি কে বিভ্রান্ত করা ভুল। অজগর তালিকাগুলি তালিকাগুলি তাই ব্যবহৃত নামের সাথে সতর্ক থাকুন।
list_01 = [4, 6.2, 7-2j, 'flo', 'cro']
list_01
Out[85]: [4, 6.2, (7-2j), 'flo', 'cro']
তালিকা এবং এর মধ্যে একটি খুব গুরুত্বপূর্ণ পার্থক্য রয়েছে array.array()
। এই উভয় বস্তু ক্রমযুক্ত ক্রম হয়, অ্যারে। অ্যারে () একটি আদেশযুক্ত সমজাতীয় অনুক্রম যেখানে একটি তালিকা একটি অ-সমজাতীয় ক্রম হয়।
আপনি পাইথনে কিছু ঘোষণা করবেন না। আপনি শুধু এটি ব্যবহার করুন। আমি আপনাকে http://diveintopython.net এর মতো কিছু দিয়ে শুরু করার পরামর্শ দিচ্ছি ।
আমি সাধারণত a = [1,2,3]
যা করতে চাই তা আসলে এটি list
তবে arrays
এই আনুষ্ঠানিক সংজ্ঞাটি দেখার জন্য
লেনার্টের উত্তরে যুক্ত করতে একটি অ্যারে এভাবে তৈরি করা যেতে পারে:
from array import array
float_array = array("f",values)
যেখানে মানগুলি একটি টিপল, তালিকা, বা এনপি.আরে রূপে নিতে পারে তবে অ্যারে নয়:
values = [1,2,3]
values = (1,2,3)
values = np.array([1,2,3],'f')
# 'i' will work here too, but if array is 'i' then values have to be int
wrong_values = array('f',[1,2,3])
# TypeError: 'array.array' object is not callable
এবং আউটপুট এখনও একই থাকবে:
print(float_array)
print(float_array[1])
print(isinstance(float_array[1],float))
# array('f', [1.0, 2.0, 3.0])
# 2.0
# True
অ্যারের সাথে তালিকার কাজ করার জন্য বেশিরভাগ পদ্ধতিগুলি সাধারণ, পপ (), প্রসারিত (), এবং সংযোজন () হয়।
উত্তর এবং মন্তব্যগুলি বিচার করে দেখা যায় যে অ্যারের ডেটা স্ট্রাকচারটি তেমন জনপ্রিয় নয়। যদিও আমি এটি পছন্দ করি ঠিক তেমনভাবেই কোনও তালিকার চেয়ে টুপল পছন্দ করে।
অ্যারে কাঠামোর একটি তালিকা বা এনপি.আরেয়ের চেয়ে কঠোর নিয়ম রয়েছে এবং এটি ত্রুটিগুলি হ্রাস করতে পারে এবং ডিবাগিংকে আরও সহজ করে তুলতে পারে, বিশেষত সংখ্যাসূচক ডেটার সাথে কাজ করার সময়।
কোনও int অ্যারেতে একটি ফ্লোট সন্নিবেশ করানোর / সংযোজন করার চেষ্টাগুলি একটি টাইপ এরির ফেলে দেবে:
values = [1,2,3]
int_array = array("i",values)
int_array.append(float(1))
# or int_array.extend([float(1)])
# TypeError: integer argument expected, got float
অ্যারে আকারে পূর্ণসংখ্যা (উদাহরণস্বরূপ সূচকগুলির তালিকা) বোঝানো মানগুলি রাখার ফলে "প্রকারের ত্রুটি: তালিকার সূচকগুলি অবশ্যই পূর্ণসংখ্যার, ভাসমান নয়" রোধ করতে পারে, যেহেতু অ্যারেগুলি এনপি.আররে এবং তালিকার মতো পুনরাবৃত্তি হতে পারে:
int_array = array('i',[1,2,3])
data = [11,22,33,44,55]
sample = []
for i in int_array:
sample.append(data[i])
বিরক্তিকরভাবে, একটি ফ্লোট অ্যারেতে কোন সংযোজন অন্তর্ভুক্ত করার ফলে ব্যতিক্রম না ছড়িয়ে ইন্টি ফ্লোটে পরিণত হবে।
এনপি.আররে এর এন্ট্রিগুলির জন্যও একই ডেটা টাইপ ধরে রাখা যায়, তবে ত্রুটি দেওয়ার পরিবর্তে এটি তার ডাটা টাইপটিকে নতুন এন্ট্রিগুলিতে ফিট করে (সাধারণত ডাবল বা স্ট্রাইটে):
import numpy as np
numpy_int_array = np.array([1,2,3],'i')
for i in numpy_int_array:
print(type(i))
# <class 'numpy.int32'>
numpy_int_array_2 = np.append(numpy_int_array,int(1))
# still <class 'numpy.int32'>
numpy_float_array = np.append(numpy_int_array,float(1))
# <class 'numpy.float64'> for all values
numpy_str_array = np.append(numpy_int_array,"1")
# <class 'numpy.str_'> for all values
data = [11,22,33,44,55]
sample = []
for i in numpy_int_array_2:
sample.append(data[i])
# no problem here, but TypeError for the other two
অ্যাসাইনমেন্টের সময় এটিও সত্য। যদি ডেটা প্রকার নির্দিষ্ট করে দেওয়া হয়, np.array, যেখানেই সম্ভব, এন্ট্রিগুলিকে সেই তথ্য প্রকারে রূপান্তরিত করবে:
int_numpy_array = np.array([1,2,float(3)],'i')
# 3 becomes an int
int_numpy_array_2 = np.array([1,2,3.9],'i')
# 3.9 gets truncated to 3 (same as int(3.9))
invalid_array = np.array([1,2,"string"],'i')
# ValueError: invalid literal for int() with base 10: 'string'
# Same error as int('string')
str_numpy_array = np.array([1,2,3],'str')
print(str_numpy_array)
print([type(i) for i in str_numpy_array])
# ['1' '2' '3']
# <class 'numpy.str_'>
বা, সংক্ষেপে:
data = [1.2,3.4,5.6]
list_1 = np.array(data,'i').tolist()
list_2 = [int(i) for i in data]
print(list_1 == list_2)
# True
অ্যারে কেবল দিতে হবে যখন:
invalid_array = array([1,2,3.9],'i')
# TypeError: integer argument expected, got float
এ কারণে, টাইপ-নির্দিষ্ট কমান্ডের জন্য এনপি.আররে ব্যবহার করা ভাল ধারণা নয়। অ্যারের কাঠামো এখানে দরকারী। তালিকা মানগুলির ডাটা টাইপ সংরক্ষণ করে।
এবং কোনও কিছুর জন্য আমি বরং বেদনাদায়ক বলে মনে করি: ডাটা টাইপটি অ্যারে () এ প্রথম আর্গুমেন্ট হিসাবে নির্দিষ্ট করা হয়, তবে (সাধারণত) এনপি.আররে () এ দ্বিতীয় হয়। : |
সি এর সাথে সম্পর্কিতটি এখানে উল্লেখ করা হয়েছে: পাইথন লিস্ট বনাম অ্যারে - কখন ব্যবহার করবেন?
মজা অন্বেষণ করুন!
দ্রষ্টব্য: অ্যারের টাইপযুক্ত এবং কঠোর প্রকৃতি পাইথনের চেয়ে সি এর দিকে বেশি ঝুঁকছে এবং ডিজাইনের দ্বারা পাইথনের কার্যকরীতে অনেক ধরণের নির্দিষ্ট সীমাবদ্ধতা নেই। এর অজনপ্রিয়তা সহযোগী কাজের ক্ষেত্রেও একটি ইতিবাচক প্রতিক্রিয়া তৈরি করে এবং এটিকে প্রতিস্থাপন করা বেশিরভাগ ক্ষেত্রে অতিরিক্ত [ইনট্রেড (এক্স) ফাইলের জন্য এক্স) জড়িত। সুতরাং অ্যারের অস্তিত্বকে উপেক্ষা করা পুরোপুরি কার্যকর এবং যুক্তিযুক্ত। এটি আমাদের বেশিরভাগ ক্ষেত্রে কোনওভাবে বাধা সৃষ্টি করা উচিত নয়। : ডি
পাইথন তাদের তালিকা বলে । আপনি বর্গাকার বন্ধনী এবং কমা সহ আক্ষরিক একটি তালিকা লিখতে পারেন:
>>> [6,28,496,8128]
[6, 28, 496, 8128]
আমার স্ট্রিংগুলির একটি অ্যারে ছিল এবং এটি একই দৈর্ঘ্যের বুলিয়ানগুলির সত্যতার সাথে আরম্ভের একটি অ্যারের প্রয়োজন। এটাই আমি করেছি
strs = ["Hi","Bye"]
bools = [ True for s in strs ]
int count[26]={0};
সম্ভবত আরও ভাল উপায় আছে তবে bools
উপরে থেকে এই বৈকল্পিকটি count=[0 for ii in range(26)]
পরে কাজ করেছিল , আমি তখন এটিকে পরিবর্তন করেছি count=[0]*26
যা ভাল মনে হয়।
আপনি তালিকা তৈরি করতে এবং এগুলিতে রূপান্তর করতে পারেন বা ন্যালি মডিউলটি ব্যবহার করে অ্যারে তৈরি করতে পারেন। এটি চিত্রিত করার জন্য নীচে কয়েকটি উদাহরণ দেওয়া হল। নম্পি বহুমাত্রিক অ্যারেগুলির সাথে কাজ করা আরও সহজ করে তোলে।
import numpy as np
a = np.array([1, 2, 3, 4])
#For custom inputs
a = np.array([int(x) for x in input().split()])
আপনি পুনরায় আকার ফাংশনটি ব্যবহার করে এই অ্যারেটিকে 2X2 ম্যাট্রিক্সে পুনরায় আকার দিতে পারেন যা ম্যাট্রিক্সের মাত্রা হিসাবে ইনপুট নেয়।
mat = a.reshape(2, 2)