আমি কৌতূহল যে পাইথনে কেন একটি তালিকার পিছনে কমাটি বৈধ বাক্য গঠন এবং এটি দেখে মনে হয় যে পাইথন কেবল এটিকে উপেক্ষা করে:
>>> ['a','b',]
['a', 'b']
এটি যখন থেকে একটি টিপল ('a')
এবং ('a',)
দুটি ভিন্ন জিনিস, তবে তালিকাগুলিতে এটি বোধগম্য হয়?
আমি কৌতূহল যে পাইথনে কেন একটি তালিকার পিছনে কমাটি বৈধ বাক্য গঠন এবং এটি দেখে মনে হয় যে পাইথন কেবল এটিকে উপেক্ষা করে:
>>> ['a','b',]
['a', 'b']
এটি যখন থেকে একটি টিপল ('a')
এবং ('a',)
দুটি ভিন্ন জিনিস, তবে তালিকাগুলিতে এটি বোধগম্য হয়?
উত্তর:
এর প্রধান সুবিধা হ'ল এটি বহু-লাইন তালিকা সম্পাদনা করা সহজ করে এবং এটি বিশৃঙ্খলায় খসখসে হ্রাস করে।
পরিবর্তন করা হচ্ছে:
s = ['manny',
'mo',
'jack',
]
প্রতি:
s = ['manny',
'mo',
'jack',
'roger',
]
ডিফের মধ্যে কেবল একটি লাইন পরিবর্তন জড়িত:
s = ['manny',
'mo',
'jack',
+ 'roger',
]
যখন পিছনের কমাটি বাদ দেওয়া হয়েছিল তখন আরও বিভ্রান্তিকর বহু-লাইন পার্থক্যটি বজায় রাখে:
s = ['manny',
'mo',
- 'jack'
+ 'jack',
+ 'roger'
]
পরের তফাতটি কেবল একটি লাইন যুক্ত হয়েছিল এবং অন্য রেখার বিষয়বস্তু পরিবর্তন হয়নি তা দেখতে আরও শক্ত করে তোলে।
এটি এটি করার ঝুঁকিও হ্রাস করে:
s = ['manny',
'mo',
'jack'
'roger' # Added this line, but forgot to add a comma on the previous line
]
এবং অন্তর্নিহিত স্ট্রিং আক্ষরিক সম্মিলন ট্রিগার , s = ['manny', 'mo', 'jackroger']
উদ্দেশ্যে ফলাফল পরিবর্তে উত্পাদন ।
List = "[" {Item ","} "]".
বনামList = "[" ({Item","}Item|)"]".
"\"item\","
প্রিন্ট করা তার চেয়ে প্রতিটি আইটেমের জন্য প্রিন্ট করা অনেক সহজ । "\"item\""
","
অ্যারেতে ট্রেলিং কমা করার অনুমতি দেওয়ার জন্য এটি একটি সাধারণ সিনট্যাকটিকাল কনভেনশন, সি এবং জাভা এর মতো ভাষা এটির অনুমতি দেয় এবং পাইথন মনে হয় যে এটি তালিকাভুক্ত ডেটা কাঠামোর জন্য এই সম্মেলনটি গ্রহণ করেছে। তালিকা তৈরির জন্য কোড উত্পন্ন করার সময় এটি বিশেষত কার্যকর: কেবলমাত্র উপাদান এবং কমাগুলির ক্রম তৈরি করুন, শেষটিকে কমা না হওয়া উচিত বলে একটি বিশেষ কেস হিসাবে বিবেচনা করার দরকার নেই।
এটি একটি নির্দিষ্ট ধরণের বাগ দূর করতে সহায়তা করে। এটি একাধিক লাইনে তালিকা লিখতে কখনও কখনও পরিষ্কার হয় sometimes তবে পরে, মেইনটেনেসে আপনি আইটেমগুলি পুনরায় সাজিয়ে নিতে চাইতে পারেন।
l1 = [
1,
2,
3,
4,
5
]
# Now you want to rearrange
l1 = [
1,
2,
3,
5
4,
]
# Now you have an error
তবে আপনি যদি পূর্ববর্তী কমাগুলিকে অনুমতি দেন এবং সেগুলি ব্যবহার করেন, আপনি কোনও ত্রুটি প্রবর্তন না করেই সহজেই লাইনগুলিকে পুনর্বিন্যাস করতে পারেন।
একটি টিউপল আলাদা কারণ কারণ ('a')
প্রচ্ছন্ন ধারাবাহিকতা ব্যবহার করে প্রসারিত ()
অপারেটর হিসাবে প্রসারিত হয় , যেখানে ('a',)
দৈর্ঘ্য 1 টি টুপল বোঝায়।
আপনার আসল উদাহরণটি হত tuple('a')
('a'),
একটি স্ট্রিং; তবে আমার বক্তব্যটি ছিল যে টিউপসগুলিতে ট্রেলিং কমাগুলি তাৎপর্যপূর্ণ তবে তালিকার মধ্যে তারা পাইথন সেগুলি গ্রহণ করে বলে মনে হয় না।
tuple('a')
সম্ভবত এটি একটি খারাপ উদাহরণ, কারণ সাধারণভাবে tuple(x)
এবং (x,)
একই জিনিস নয়। tuple('ab') != ('ab',)
। tuple('a') == ('a',)
শুধুমাত্র কারণ 'a'
দৈর্ঘ্য 1 স্ট্রিং
>>> ("a",) == ("a")
মিথ্যা >>> ("ab",) == ("ab")
মিথ্যা >>> ("ab", "bc",) == ("ab", "bc")
সত্য
মূল কারণ হ'ল ডিফকে কম জটিল করে তোলা। উদাহরণস্বরূপ আপনার একটি তালিকা রয়েছে:
list = [
'a',
'b',
'c'
]
এবং আপনি এটিতে অন্য একটি উপাদান যুক্ত করতে চান। তারপরে আপনি এটি শেষ করবেন:
list = [
'a',
'b',
'c',
'd'
]
সুতরাং, ডিফ দুটি দেখায় যে দুটি লাইন পরিবর্তন করা হয়েছে, প্রথমে 'গ' এর সাথে সামঞ্জস্য রেখে 'শেষ' লাইনে 'ডি' যুক্ত করুন।
সুতরাং, পাইথন তালিকার শেষ উপাদানটিতে ',' অনুসরণ করার অনুমতি দেয়, যাতে অতিরিক্ত বিভেদ রোধ করতে পারে যা বিভ্রান্তি সৃষ্টি করতে পারে।