উত্তর:
append
: শেষে বস্তু সংযোজন।
x = [1, 2, 3]
x.append([4, 5])
print (x)
আপনি দেয়: [1, 2, 3, [4, 5]]
extend
: পুনরাবৃত্তিযোগ্য থেকে উপাদান যুক্ত করে তালিকা প্রসারিত করে Ex
x = [1, 2, 3]
x.extend([4, 5])
print (x)
আপনি দেয়: [1, 2, 3, 4, 5]
x + [4, 5]
আপনাকে x.extend()
এক্সকে নির্ধারিত একটি নতুন তালিকা দেয় - মূল তালিকাটিকে রূপান্তর করে। আমি নীচে এখানে আমার উত্তর বিস্তারিত।
x += [4,5]
।
append
হয় বস্তু । যদি আপনি ব্যবহার করার চেষ্টা করেন extend
এবং আপনি একটি অভিধানে পাস করেন তবে এটি কীটি সংযোজন করবে এবং অ্যারেটির শেষে পুরো হ্যাশটি নয়।
append
একটি তালিকায় একটি উপাদান যুক্ত করে, এবং extend
অন্য তালিকার সাথে প্রথম তালিকাকে সম্মতি জানায় (বা অন্য কোনও পুনরাবৃত্তীয়, প্রয়োজনীয়তার জন্য কোনও তালিকা নয়))
>>> li = ['a', 'b', 'mpilgrim', 'z', 'example']
>>> li
['a', 'b', 'mpilgrim', 'z', 'example']
>>> li.append("new")
>>> li
['a', 'b', 'mpilgrim', 'z', 'example', 'new']
>>> li.append(["new", 2])
>>> li
['a', 'b', 'mpilgrim', 'z', 'example', 'new', ['new', 2]]
>>> li.insert(2, "new")
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', ['new', 2]]
>>> li.extend(["two", "elements"])
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', ['new', 2], 'two', 'elements']
তালিকা পদ্ধতি সংযোজন এবং প্রসারিতের মধ্যে পার্থক্য কী?
append
তালিকার শেষে একটি যুক্ত উপাদান হিসাবে যুক্তি যুক্ত করে। তালিকার দৈর্ঘ্য নিজেই এক এক করে বাড়বে।extend
তার যুক্তির উপরে পুনরাবৃত্তি তালিকায় প্রতিটি উপাদান যুক্ত করে তালিকাটি প্রসারিত করে। তালিকার দৈর্ঘ্য বৃদ্ধি পাবে তবে অনেক উপাদান পুনরাবৃত্ত যুক্তিতে ছিল।append
list.append
পদ্ধতি তালিকার শেষে একটি বস্তু appends।
my_list.append(object)
বস্তু যাই হোক না কেন, একটি সংখ্যা, একটি স্ট্রিং, অন্য তালিকা, বা অন্য কিছু, এটি my_list
তালিকার একক প্রবেশ হিসাবে শেষের দিকে যুক্ত হয়ে যায় ।
>>> my_list
['foo', 'bar']
>>> my_list.append('baz')
>>> my_list
['foo', 'bar', 'baz']
সুতরাং মনে রাখবেন যে একটি তালিকা একটি বস্তু। আপনি যদি অন্য তালিকাকে তালিকার সাথে যুক্ত করেন তবে প্রথম তালিকাটি তালিকার শেষে একক অবজেক্ট হবে (যা আপনি যা চান তা নাও হতে পারে):
>>> another_list = [1, 2, 3]
>>> my_list.append(another_list)
>>> my_list
['foo', 'bar', 'baz', [1, 2, 3]]
#^^^^^^^^^--- single item at the end of the list.
extend
list.extend
পদ্ধতি একটি iterable থেকে উপাদানগুলি সংযোজন করে একটি তালিকা প্রসারিত:
my_list.extend(iterable)
সুতরাং প্রসারিতের সাথে, পুনরাবৃত্তির প্রতিটি উপাদান তালিকায় যুক্ত হয়ে যায়। উদাহরণ স্বরূপ:
>>> my_list
['foo', 'bar']
>>> another_list = [1, 2, 3]
>>> my_list.extend(another_list)
>>> my_list
['foo', 'bar', 1, 2, 3]
মনে রাখবেন যে স্ট্রিংটি পুনরাবৃত্তিযোগ্য, সুতরাং আপনি যদি একটি স্ট্রিং সহ একটি তালিকা প্রসারিত করেন তবে আপনি স্ট্রিংটির উপরে পুনরাবৃত্তি করার সাথে সাথে প্রতিটি অক্ষর যুক্ত করবেন (যা আপনি যা চান তা নাও হতে পারে):
>>> my_list.extend('baz')
>>> my_list
['foo', 'bar', 1, 2, 3, 'b', 'a', 'z']
__add__
( +
) এবং __iadd__
( +=
)উভয় +
এবং +=
অপারেটর জন্য সংজ্ঞায়িত করা হয় list
। তারা প্রসারিত শব্দার্থগতভাবে অনুরূপ।
my_list + another_list
মেমোরিতে একটি তৃতীয় তালিকা তৈরি করে, যাতে আপনি এর ফলাফলটি ফিরিয়ে দিতে পারেন, তবে এটির জন্য দ্বিতীয় পুনরাবৃত্তিযোগ্য একটি তালিকা হওয়া দরকার।
my_list += another_list
মডিফাই তালিকায় জায়গা (এটা হল ইন-জায়গা অপারেটর, এবং তালিকা চপল বস্তু, হিসাবে আমরা দেখা করেছি হয়) তাই এটি একটি নতুন তালিকা তৈরি করে না। এটি প্রসারিতের মতো কাজ করে, যাতে দ্বিতীয় পুনরাবৃত্তিযোগ্য কোনও ধরণের পুনরাবৃত্ত হতে পারে।
বিভ্রান্ত করবেন না - এর my_list = my_list + another_list
সমতুল্য নয় +=
- এটি আপনাকে আমার_লিস্টে বরাদ্দ করা একদম নতুন তালিকা দেয়।
অতিরিক্ত সংক্ষিপ্ত সময়ের জটিলতা রয়েছে ও (1) App
প্রসারের সময় জটিলতা রয়েছে, হে (কে)।
append
জটিলতায় যোগ করার জন্য একাধিক কলগুলির মাধ্যমে আইট্রেট করা , এটিকে প্রসারিতের সমতুল্য করে তোলে এবং যেহেতু এক্সটেন্ড এর পুনরাবৃত্তিটি সিতে প্রয়োগ করা হয়, আপনি যদি কোনও তালিকার উপর থেকে পুনরাবৃত্তিযোগ্য থেকে ধারাবাহিক আইটেম সংযোজন করতে চান তবে এটি সর্বদা দ্রুত হবে।
আপনি আরও বেশি পারফরম্যান্স কী তা ভাবতে পারেন, যেহেতু পরিধি হিসাবে একই ফলাফল অর্জন করতে ব্যবহার করা যেতে পারে। নিম্নলিখিত ফাংশনগুলি একই কাজ করে:
def append(alist, iterable):
for item in iterable:
alist.append(item)
def extend(alist, iterable):
alist.extend(iterable)
সুতরাং আসুন তাদের সময়:
import timeit
>>> min(timeit.repeat(lambda: append([], "abcdefghijklmnopqrstuvwxyz")))
2.867846965789795
>>> min(timeit.repeat(lambda: extend([], "abcdefghijklmnopqrstuvwxyz")))
0.8060121536254883
একজন মন্তব্যকারী বলেছেন:
নিখুঁত উত্তর, আমি কেবল মাত্র একটি উপাদান যুক্ত করার তুলনা করার সময়টি মিস করছি
শব্দার্থগতভাবে সঠিক জিনিসটি করুন। যদি আপনি একটি পুনরাবৃত্তযোগ্য সমস্ত উপাদান যুক্ত করতে চান তবে ব্যবহার করুন extend
। আপনি যদি কেবল একটি উপাদান যুক্ত করে থাকেন তবে ব্যবহার করুন append
।
ঠিক আছে, সুতরাং সময় মতো এটি কীভাবে কার্যকর হয় তা দেখার জন্য একটি পরীক্ষা তৈরি করি:
def append_one(a_list, element):
a_list.append(element)
def extend_one(a_list, element):
"""creating a new list is semantically the most direct
way to create an iterable to give to extend"""
a_list.extend([element])
import timeit
এবং আমরা দেখতে পাই যে কেবল প্রসারিত ব্যবহারের জন্য পুনরাবৃত্তিযোগ্য তৈরি করার জন্য আমাদের পথের বাইরে যাওয়া হ'ল সময় (অপ্রয়োজনীয়) অপচয়
>>> min(timeit.repeat(lambda: append_one([], 0)))
0.2082819009956438
>>> min(timeit.repeat(lambda: extend_one([], 0)))
0.2397019260097295
আমরা এ থেকে শিখি যে extend
যখন আমাদের যুক্ত করার জন্য কেবলমাত্র একটি উপাদান রয়েছে তখন ব্যবহার করে কিছুই পাওয়া যায় না ।
এছাড়াও, এই সময়গুলি গুরুত্বপূর্ণ নয়। আমি কেবল তাদের এ কথাটি দেখানোর জন্য দিচ্ছি যে পাইথনে, শব্দার্থগতভাবে সঠিক কাজটি করা জিনিসগুলি সঠিক উপায়ে করছে ™
এটি অনুমেয় যে আপনি দুটি তুলনামূলক অপারেশনগুলির সময় পরীক্ষা করতে পারেন এবং একটি অস্পষ্ট বা বিপরীত ফলাফল পেতে পারেন। শব্দার্থগতভাবে সঠিক জিনিসটি করার জন্য কেবল মনোনিবেশ করুন।
আমরা দেখি যে extend
শব্দার্থগতভাবে পরিষ্কার, এবং যে এটা অনেক দ্রুত চেয়ে চালাতে পারেন append
, যখন আপনি একটি তালিকা একটি iterable প্রতিটি উপাদান যোগ মনস্থ।
তালিকায় যুক্ত করতে যদি আপনার কাছে কেবলমাত্র একটি একক উপাদান (পুনরাবৃত্তযোগ্য নয়) থাকে তবে ব্যবহার করুন append
।
ex1 = 0
এবং ex2 = [0]
) হিসাবে তৈরি করা এবং এই ভেরিয়েবলগুলি পাস করা সম্ভবত আরও ভাল ।
l1 += l2
বনাম এর অভিনয় সম্পর্কে কি l1.extend(l2)
?
l1 += l2
এবং l1.extend(l2)
শেষ পর্যন্ত একই কোডটি কার্যকর করুন (এতে list_extend
ফাংশনটি listobject.c
)। কেবলমাত্র পার্থক্যগুলি +=
হ'ল : ১. পুনরায় নিয়োগ l1
(নিজের পক্ষে list
এটি, তবে পুনরায় নিযুক্তি অপরিবর্তনীয় প্রকারকে সমর্থন করে যা পরে একই বস্তু নয়) এটি অবৈধ করে তোলে যদি l1
বাস্তবে কোনও পরিবর্তনযোগ্য বস্তুর বৈশিষ্ট্য হয়; উদাহরণস্বরূপ, t = ([],)
, t[0] += lst
ব্যর্থ হবে, যখন t[0].extend(lst)
কাজ করবে। 2. l1 += l2
উত্সর্গীকৃত বাইটকোডগুলি ব্যবহার করে, যখন l1.extend(l2)
সাধারণীকরণ পদ্ধতি প্রেরণ ব্যবহার করে; এই +=
তুলনায় দ্রুত করে তোলে extend
।
+=
হবে l1
তার অর্থ extend
হ'ল কিছু ক্ষেত্রে, ধীর প্রেরণটি আংশিক বা সম্পূর্ণরূপে বাম পাশের দিকে না বরাদ্দ করে তৈরি করা হয়। উদাহরণস্বরূপ, যদি list
একটি বস্তুর একটি বৈশিষ্ট্য হল, self.l1 += l2
এবং self.l1.extend(l2)
আমার পাইথন 3.6 ইন্সটল উপর অভিন্ন কর্মক্ষমতা আছে, কারণ বাস্তব অপারেশন আরো ভালো হয় self.l1 = self.l1.__iadd__(l2)
, যার মানে এটি একটি পরিমিতরূপে ব্যয়বহুল পালন করা আবশ্যক STORE_ATTR
যে self.l1.extend(l2)
হবে তা নয়।
+=
কেবলমাত্র ব্যবহার করা হচ্ছে STORE_FAST
, যা অত্যন্ত সস্তা), যেখানে মূল্য যুক্ত হচ্ছে list
এটিতে একটি আইটেমের সাথে বিদ্যমান রয়েছে, অপারেশনটি 1000 বার পুনরাবৃত্তি হয়েছে, +=
গড়ে প্রায় 33 এনএস নিয়েছে , যখন extend
78 এনএস নিয়েছে, 45 এনএসের পার্থক্য। যদি l1
একটি গ্লোবাল হয় (আরও ব্যয়বহুল প্রয়োজন STORE_GLOBAL
), পার্থক্যটি 17 এনএসে হ্রাস পাবে। তাহলে l1
আসলে local.l1
(এমনকি আরো ব্যয়বহুল প্রয়োজন STORE_ATTR
), সেখানে মধ্যে কোনো অর্থপূর্ণ পার্থক্য নেই +=
এবং extend
(সময় প্রায় অভিন্ন; extend
কখনও কখনও জেতে)।
append
একটি একক উপাদান সংযোজন। extend
উপাদানগুলির একটি তালিকা সংযোজন করে।
মনে রাখবেন আপনি যদি যোগ করার জন্য একটি তালিকা পাস করেন তবে এটি এখনও একটি উপাদান যুক্ত করে:
>>> a = [1, 2, 3]
>>> a.append([4, 5, 6])
>>> a
[1, 2, 3, [4, 5, 6]]
অ্যাপেন্ডের সাহায্যে আপনি একটি একক উপাদান যুক্ত করতে পারেন যা তালিকাটি প্রসারিত করবে:
>>> a = [1,2]
>>> a.append(3)
>>> a
[1,2,3]
আপনি যদি একাধিক উপাদানকে প্রসারিত করতে চান তবে আপনার প্রসারিত ব্যবহার করা উচিত, কারণ আপনি কেবলমাত্র একটি এলেন্ট বা উপাদানটির একটি তালিকা যুক্ত করতে পারেন:
>>> a.append([4,5])
>>> a
>>> [1,2,3,[4,5]]
যাতে আপনি নেস্টেড তালিকা পান
প্রসারিত পরিবর্তে, আপনি এর মতো একটি একক উপাদান প্রসারিত করতে পারেন
>>> a = [1,2]
>>> a.extend([3])
>>> a
[1,2,3]
অথবা, আলাদাভাবে, সংযোজন থেকে, তালিকায় বাসা বাঁধা না দিয়ে একসাথে আরও উপাদান বাড়িয়ে দিন মূল নামটিতে (এটিই নামটির প্রসারিত কারণ)
>>> a.extend([4,5,6])
>>> a
[1,2,3,4,5,6]
সংযোজন এবং প্রসারিত উভয়ই তালিকার শেষে একটি উপাদান যুক্ত করতে পারে, যদিও পরিশিষ্টগুলি সহজ।
>>> x = [1,2]
>>> x.append(3)
>>> x
[1,2,3]
>>> x = [1,2]
>>> x.extend([3])
>>> x
[1,2,3]
আপনি যদি একাধিক উপাদানের জন্য অ্যাপেন্ড ব্যবহার করেন তবে আপনাকে যুক্তি হিসাবে উপাদানগুলির একটি তালিকা পাস করতে হবে এবং আপনি একটি নিস্টেড তালিকা পাবেন!
>>> x = [1,2]
>>> x.append([3,4])
>>> x
[1,2,[3,4]]
পরিবর্তে প্রসারিতের পরিবর্তে, আপনি একটি যুক্তি হিসাবে একটি তালিকা পাস করে, তবে আপনি পুরনো ক্ষেত্রে বাসা বাঁধা না এমন নতুন উপাদান সহ একটি তালিকা পাবেন।
>>> z = [1,2]
>>> z.extend([3,4])
>>> z
[1,2,3,4]
সুতরাং, আরও উপাদান সহ, আপনি আরও আইটেম সহ একটি তালিকা পেতে প্রসারিত ব্যবহার করবেন। তবে, তালিকা যুক্ত করা তালিকায় আরও উপাদান যুক্ত করবে না, তবে একটি উপাদান যা নেস্টেড তালিকা যা আপনি কোডের আউটপুটে পরিষ্কার দেখতে পাচ্ছেন।
নিম্নলিখিত দুটি স্নিপেটগুলি শব্দার্থগতভাবে সমতুল্য:
for item in iterator:
a_list.append(item)
এবং
a_list.extend(iterator)
লুপটি সিতে প্রয়োগ করা হওয়ায় পরবর্তীগুলি আরও দ্রুত হতে পারে
extend()
সম্ভবত preallocates, append()
সম্ভবত না।
extend()
না পারেন, বুদ্ধিমানের মতো preallocate যেহেতু কিছু iterables বাস্তবায়ন না __len__()
, কিন্তু আপনি আমি যদি এটা চেষ্টা করে না বিস্মিত হতে চাই। পারফরম্যান্স লাভের কিছুটা পাইথনের পরিবর্তে খাঁটি সিতে পুনরাবৃত্ত অংশটি করা থেকে আসে, যেমন হারুনের উত্তরে উল্লেখ করা হয়েছিল ।
append()
পদ্ধতি তালিকার শেষে একটি আইটেম যোগ করা হয়েছে।
x = [1, 2, 3]
x.append([4, 5])
x.append('abc')
print(x)
# gives you
[1, 2, 3, [4, 5], 'abc']
extend()
পদ্ধতি একটি আর্গুমেন্ট, একটি তালিকা লাগে, এবং মূল লিস্টে যুক্তি আইটেম প্রতিটি appends। (তালিকাগুলি ক্লাস হিসাবে প্রয়োগ করা হয় “" তালিকা তৈরি করা "সত্যই একটি বর্গকে তাত্পর্যপূর্ণ করে তোলে such যেমনটি, তালিকায় এটিতে কাজ করে এমন পদ্ধতি রয়েছে))
x = [1, 2, 3]
x.extend([4, 5])
x.extend('abc')
print(x)
# gives you
[1, 2, 3, 4, 5, 'a', 'b', 'c']
থেকে ডাইভ মধ্যে পাইথন ।
extend
একটি উপাদান সহ একটি তালিকা হিসাবে এটি প্রবেশ করানোর পরে 'এবিসি' একক উপাদান হিসাবে যুক্ত হবে ['abc']
: [১, ২, ৩, ৪, ৫, 'এবিসি']। আপনার উদাহরণ আউটপুট সঠিক করতে, এর অ আ ক খ লাইন পরিবর্তন করুন: x.extend('abc')
। এবং এটি সরান x.extend(6)
বা এটিকে পরিবর্তন করুন x.extend([6])
।
আপনি জায়গায় বাড়ানোর পরিবর্তে প্রসারিত ফেরতের জন্য "+" ব্যবহার করতে পারেন।
l1=range(10)
l1+[11]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11]
l2=range(10,1,-1)
l1+l2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2]
একইভাবে +=
স্থানের আচরণের জন্য, তবে append
& এর থেকে সামান্য পার্থক্য রয়েছে extend
। সবচেয়ে বড় পার্থক্য এক +=
থেকে append
এবং extend
যখন এটা ফাংশন সুযোগ ব্যবহার করা হয় দেখতে এই ব্লগ পোস্টে ।
append(object)
- তালিকায় একটি অবজেক্ট যুক্ত করে তালিকা আপডেট করে।
x = [20]
# List passed to the append(object) method is treated as a single object.
x.append([21, 22, 23])
# Hence the resultant list length will be 2
print(x)
--> [20, [21, 22, 23]]
extend(list)
- মূলত দুটি তালিকাকে সম্মতি জানায়।
x = [20]
# The parameter passed to extend(list) method is treated as a list.
# Eventually it is two lists being concatenated.
x.extend([21, 22, 23])
# Here the resultant list's length is 4
print(x)
[20, 21, 22, 23]
extend()
একটি পুনরাবৃত্তি যুক্তি দিয়ে ব্যবহার করা যেতে পারে। এখানে একটি উদাহরণ। আপনি তালিকাটির তালিকার বাইরে এই ভাবে একটি তালিকা তৈরি করতে চান:
থেকে
list2d = [[1,2,3],[4,5,6], [7], [8,9]]
তুমি চাও
>>>
[1, 2, 3, 4, 5, 6, 7, 8, 9]
আপনি এটি করতে ব্যবহার itertools.chain.from_iterable()
করতে পারেন। এই পদ্ধতির ফলাফল আউটরেটার rator এর বাস্তবায়ন সমান
def from_iterable(iterables):
# chain.from_iterable(['ABC', 'DEF']) --> A B C D E F
for it in iterables:
for element in it:
yield element
আমাদের উদাহরণে ফিরে আসুন আমরা করতে পারি
import itertools
list2d = [[1,2,3],[4,5,6], [7], [8,9]]
merged = list(itertools.chain.from_iterable(list2d))
এবং চেয়েছিলেন তালিকা পেতে।
এখানে extend()
পুনরাবৃত্তি যুক্তি দিয়ে সমানভাবে কীভাবে ব্যবহার করা যায় তা এখানে :
merged = []
merged.extend(itertools.chain.from_iterable(list2d))
print(merged)
>>>
[1, 2, 3, 4, 5, 6, 7, 8, 9]
এটি অপারেটরের সমতুল্য append
এবং extend
ব্যবহার +
:
>>> x = [1,2,3]
>>> x
[1, 2, 3]
>>> x = x + [4,5,6] # Extend
>>> x
[1, 2, 3, 4, 5, 6]
>>> x = x + [[7,8]] # Append
>>> x
[1, 2, 3, 4, 5, 6, [7, 8]]
অ্যাপেন্ড () : এটি মূলত একটি উপাদান যুক্ত করতে পাইথনে ব্যবহৃত হয়।
উদাহরণ 1:
>> a = [1, 2, 3, 4]
>> a.append(5)
>> print(a)
>> a = [1, 2, 3, 4, 5]
উদাহরণ 2:
>> a = [1, 2, 3, 4]
>> a.append([5, 6])
>> print(a)
>> a = [1, 2, 3, 4, [5, 6]]
প্রসারিত () : যেখানে প্রসারিত (), দুটি তালিকায় একত্রিত হতে বা এক তালিকায় একাধিক উপাদান সন্নিবেশ করানোর জন্য ব্যবহৃত হয়।
উদাহরণ 1:
>> a = [1, 2, 3, 4]
>> b = [5, 6, 7, 8]
>> a.extend(b)
>> print(a)
>> a = [1, 2, 3, 4, 5, 6, 7, 8]
উদাহরণ 2:
>> a = [1, 2, 3, 4]
>> a.extend([5, 6])
>> print(a)
>> a = [1, 2, 3, 4, 5, 6]
একটি আকর্ষণীয় বিন্দু যা ইঙ্গিত করা হয়েছে, তবে ব্যাখ্যা করা হয়নি, তা হ'ল প্রসারণটি অতিরিক্ত সংযোজনের চেয়ে দ্রুত। যে কোনও লুপের অভ্যন্তরে সংযোজন রয়েছে তার জন্য list.extend (প্রক্রিয়াজাত_ উপাদানসমূহ) দ্বারা প্রতিস্থাপন হিসাবে বিবেচনা করা উচিত।
মনে রাখবেন যে নতুন উপাদানগুলিকে যুক্ত করার ফলে মেমরির আরও ভাল অবস্থানে পুরো তালিকার রিয়েলব্যাকশন হতে পারে। এটি যদি বেশ কয়েকবার করা হয় কারণ আমরা একবারে 1 টি উপাদান যুক্ত করছি, সামগ্রিক কর্মক্ষমতা ক্ষতিগ্রস্থ হয়। এই অর্থে, list.extend "" .join (স্ট্রিংলিস্ট) এর সাথে অনুরূপ।
সংযোজন একবারে পুরো ডেটা যুক্ত করে। নতুন তৈরি সূচীতে পুরো ডেটা যুক্ত হবে। অন্য দিকে,extend
, নাম হিসাবে এটি প্রস্তাবিত হিসাবে বর্তমান অ্যারে প্রসারিত করে।
উদাহরণ স্বরূপ
list1 = [123, 456, 678]
list2 = [111, 222]
আমাদের সাথে append
:
result = [123, 456, 678, [111, 222]]
চলার সময় extend
আমরা পাই:
result = [123, 456, 678, 111, 222]
একটি ইংরেজি অভিধান শব্দগুলির সংজ্ঞা দেয় append
এবং extend
হিসাবে:
append : একটি লিখিত নথির শেষে (কিছু) যুক্ত করুন।
প্রসারিত : বৃহত্তর করা। বড় বা প্রসারিত করুন
সেই জ্ঞান দিয়ে এখন বুঝতে পারি
1) এবং মধ্যে পার্থক্যappend
extend
append
:
extend
:
list(iterable)
।2) এবং মধ্যে মিলappend
extend
None
।উদাহরণ
lis = [1, 2, 3]
# 'extend' is equivalent to this
lis = lis + list(iterable)
# 'append' simply appends its argument as the last element to the list
# as long as the argument is a valid Python object
list.append(object)
আমি আশা করি আমি এই প্রশ্নের একটি দরকারী পরিপূরক করতে পারেন। যদি আপনার তালিকাতে একটি নির্দিষ্ট ধরণের অবজেক্ট সংরক্ষণ করা হয়, উদাহরণস্বরূপ Info
, এখানে এমন পরিস্থিতি রয়েছে যা extend
পদ্ধতিটি উপযুক্ত নয়: একটি for
লুপে এবং Info
প্রতিবার কোনও বস্তু উত্পন্ন করে এবং extend
এটি আপনার তালিকায় সংরক্ষণ করার জন্য এটি ব্যর্থ হবে। ব্যতিক্রম নীচের মত:
প্রকারের ত্রুটি: 'তথ্য' অবজেক্টটি পুনরাবৃত্ত হয় না
আপনি যদি append
পদ্ধতিটি ব্যবহার করেন তবে ফলাফলটি ঠিক আছে। কারণ প্রতিবার এই extend
পদ্ধতিটি ব্যবহার করার সময় , এটি সর্বদা এটি তালিকা বা অন্য কোনও সংগ্রহের ধরণ হিসাবে গণ্য করবে, পুনরাবৃত্তি করবে এবং এটি পূর্বের তালিকার পরে রাখবে। একটি নির্দিষ্ট বস্তুর পুনরাবৃত্তি করা যাবে না, স্পষ্টতই।
স্বজ্ঞাতভাবে তাদের পার্থক্য করা
l1 = ['a', 'b', 'c']
l2 = ['d', 'e', 'f']
l1.append(l2)
l1
['a', 'b', 'c', ['d', 'e', 'f']]
এটি l1
তার দেহের অভ্যন্তরে কোনও দেহকে পুনরুত্পাদন করার মতো (নেস্টেড)।
# Reset l1 = ['a', 'b', 'c']
l1.extend(l2)
l1
['a', 'b', 'c', 'd', 'e', 'f']
এটি এমন যে দুটি বিচ্ছিন্ন ব্যক্তি বিবাহ করে এবং একটি সংযুক্ত পরিবার গঠন করে।
আমি আপনার রেফারেন্সের জন্য সমস্ত তালিকার পদ্ধতির একটি বিস্তৃত চিটপত্র তৈরি করি।
list_methods = {'Add': {'extend', 'append', 'insert'},
'Remove': {'pop', 'remove', 'clear'}
'Sort': {'reverse', 'sort'},
'Search': {'count', 'index'},
'Copy': {'copy'},
}
append
কেবলমাত্র একটি আইটেম দ্বারা তালিকাটিকে (স্থানে) প্রসারিত করে , একক বস্তু (আর্গুমেন্ট হিসাবে) পাস করেছে passed
extend
বস্তুটি যতটা পাস করেছে (আর্গুমেন্ট হিসাবে) যতগুলি আইটেম রয়েছে তার তালিকা (স্থানটিতে) "বাড়িয়ে তোলে" ।
এটি str
বস্তুর জন্য কিছুটা বিভ্রান্তিকর হতে পারে ।
append
শেষে একটি একক স্ট্রিং আইটেম
extend
যুক্ত করবে তবে সেই স্ট্রিংয়ের দৈর্ঘ্যের হিসাবে অনেকগুলি "একক" 'স্ট' আইটেম যুক্ত হবে।append
তবুও শেষে একক 'তালিকা' আইটেম
extend
যুক্ত করবে এবং উত্তীর্ণ তালিকার দৈর্ঘ্যের হিসাবে অনেকগুলি 'তালিকা' আইটেম যুক্ত করবে।def append_o(a_list, element): a_list.append(element) print('append:', end = ' ') for item in a_list: print(item, end = ',') print() def extend_o(a_list, element): a_list.extend(element) print('extend:', end = ' ') for item in a_list: print(item, end = ',') print() append_o(['ab'],'cd') extend_o(['ab'],'cd') append_o(['ab'],['cd', 'ef']) extend_o(['ab'],['cd', 'ef']) append_o(['ab'],['cd']) extend_o(['ab'],['cd'])
সৃষ্টি করে:
append: ab,cd,
extend: ab,c,d,
append: ab,['cd', 'ef'],
extend: ab,cd,ef,
append: ab,['cd'],
extend: ab,cd,
পাইথনের এক্সটেনসিবিলিটি মেকানিজমগুলির মধ্যে একটি হ'ল সংযোজন এবং প্রসারিত।
সংযোজন: তালিকার শেষে একটি উপাদান যুক্ত করে।
my_list = [1,2,3,4]
তালিকায় একটি নতুন উপাদান যুক্ত করতে, আমরা নিম্নলিখিত পদ্ধতিতে সংযোজন পদ্ধতি ব্যবহার করতে পারি।
my_list.append(5)
নতুন উপাদান যুক্ত করা হবে এমন ডিফল্ট অবস্থান সর্বদা (দৈর্ঘ্য + 1) পজিশনে থাকে।
সন্নিবেশ: সন্নিবেশ পদ্ধতিটি সংযোজন সীমাবদ্ধতা অতিক্রম করতে ব্যবহৃত হয়েছিল। সন্নিবেশ সহ আমরা আমাদের নতুন উপাদানটি sertedোকাতে চাই সঠিক অবস্থানটি স্পষ্টভাবে সংজ্ঞায়িত করতে পারি।
সন্নিবেশের পদ্ধতি বর্ণনাকারী (সূচক, বস্তু)। এটি দুটি আর্গুমেন্ট লাগে, প্রথমটি সূচক হ'ল আমরা আমাদের উপাদানটি সন্নিবেশ করতে চাই এবং দ্বিতীয়টি উপাদানটি নিজেই।
Example: my_list = [1,2,3,4]
my_list[4, 'a']
my_list
[1,2,3,4,'a']
প্রসারিত করুন: যখন আমরা দুটি বা ততোধিক তালিকাকে একটি তালিকায় যোগ দিতে চাই তখন এটি খুব কার্যকর very প্রসারিত ছাড়াই, যদি আমরা দুটি তালিকায় যোগ দিতে চাই, ফলে থাকা অবজেক্টটিতে তালিকার একটি তালিকা থাকবে।
a = [1,2]
b = [3]
a.append(b)
print (a)
[1,2,[3]]
যদি আমরা পজ 2 এ উপাদানটি অ্যাক্সেস করার চেষ্টা করি তবে আমরা উপাদানটির পরিবর্তে একটি তালিকা ([3]) পাই। দুটি তালিকায় যোগ দিতে, আমাদের অ্যাপেন্ড ব্যবহার করতে হবে।
a = [1,2]
b = [3]
a.extend(b)
print (a)
[1,2,3]
একাধিক তালিকায় যোগ দিতে
a = [1]
b = [2]
c = [3]
a.extend(b+c)
print (a)
[1,2,3]
extend
উপরের উদাহরণে, কেবল অতিরিক্ত অপারেটরটি ব্যবহার করে এবং এর মধ্যে পার্থক্য কীx = x + [4, 5]
?