শুধুমাত্র একটি উপাদান দিয়ে কীভাবে টিপল তৈরি করবেন


108

নীচের উদাহরণে আমি আশা করব যে সমস্ত উপাদানগুলি টিপলস হবে, কেন যখন একটি মাত্র স্ট্রিং থাকে তখন একটি টিপল একটি স্ট্রিতে রূপান্তরিত হয়?

>>> a = [('a'), ('b'), ('c', 'd')]
>>> a
['a', 'b', ('c', 'd')]
>>> 
>>> for elem in a:
...     print type(elem)
... 
<type 'str'>
<type 'str'>
<type 'tuple'>

4
('a')সবেমাত্র মূল্যায়ন করুন'a'
পুরাতনরব

4
বাহ - 3 মিনিটে 3 টি সঠিক উত্তর :) তবে, এর গোপনীয়তাটি নোট করুন ,:a = 1, 2, 3; print a

27
বন্ধনী একটি টুপল তৈরি করে না, কমাগুলি করে।
সিডারকে

17
@ কেদারকে, খালি টুপল ব্যতীত (), যা কেবল এক জোড়া বন্ধনী জুড়ে।
ফ্রেডেরিক হামিদী

4
সত্য, বা বরং, False- প্রায় সমস্ত খালি টিপলই ভাল (যদি আপনি কী বোঝাতে চান তবে)।
সিডার্কে

উত্তর:


145

কারণ এই প্রথম দুটি উপাদান টিপলস নয়; তারা কেবল স্ট্রিং। প্রথম বন্ধনী এগুলি স্বয়ংক্রিয়ভাবে টিপল করে না। স্ট্রিংয়ের পরে আপনাকে কমা যুক্ত করতে হবে অজগরকে নির্দেশ করতে যে এটি টিপল হওয়া উচিত।

>>> type( ('a') )
<type 'str'>

>>> type( ('a',) )
<type 'tuple'>

আপনার উদাহরণ কোড ঠিক করতে এখানে কমা যুক্ত করুন:

>>> a = [('a',), ('b',), ('c', 'd')]

             ^       ^

থেকে পাইথন ডক্স :

একটি বিশেষ সমস্যা 0 বা 1 আইটেমযুক্ত টিপলগুলি নির্মাণ: সিনট্যাক্সগুলিতে এগুলিকে সামঞ্জস্য করার জন্য কিছু অতিরিক্ত quirks রয়েছে। খালি টিপলগুলি খালি জোড়া বন্ধনী দ্বারা নির্মিত হয়; একটি আইটেম সহ একটি টিপল কমা দিয়ে মান অনুসরণ করে নির্মিত হয় (এটি প্রথম বন্ধনীতে কোনও মান আবদ্ধ করার জন্য যথেষ্ট নয়)। কুরুচিপূর্ণ, কিন্তু কার্যকর।

আপনি সত্যিই চিহ্ন কমা সিনট্যাক্স ঘৃণা থাকে, তাহলে একটি কার্যসংক্রান্ত একটি পাস হয় listকরার tuple()ফাংশন:

x = tuple(['a'])

7
এটি যদিও খুব মার্জিত নয় এবং একধরণের বিভ্রান্তিকর দেখাচ্ছে। অন্য কোন উপায আছে কি?
রবার্ট মুর

4
কাজ করে বলে মনে হচ্ছে না। উদাহরণস্বরূপ: tuple ("abc") (অতিরিক্ত কমা সহ বা ছাড়াই) দেয় ('a', 'b', 'c'), যখন ("abc",) দেয় ('abc')। সুতরাং টিপল () এখানে কার্যকর ব্যবহারযোগ্য বিকল্প বলে মনে হচ্ছে না।
বেন ফার্মার

4
@Ben কটাক্ষপাত আছে ডক্সtuple একটি পুনরাবৃত্তযোগ্য গ্রহণ করে , যা একটি স্ট্রিং (অক্ষরের উপরে পুনরাবৃত্তি হয়)। আপনি চিহ্ন কমা ব্যবহার করছেন না পীড়াপীড়ি করে, তাহলে কোন মধ্যবর্তী তালিকা তৈরি: tuple(['abc'])
জোনাথন রাইনহার্ট

অবশ্যই, আমি কেবল বলছি যে টিপল ফাংশনটি কমাটির প্রয়োজনকে অস্বীকার করে না।
বেন ফার্মার

4
@ ম্যাটানস্টার এই ক্ষেত্রে ভাষার বাক্য গঠনটি পরিবর্তন হয়নি। আমি যতদূর জানি সমস্যা পাইথন 2 এবং 3. জন্য একই
জোনাথন রেন্হার্ট

20

আপনার প্রথম দুটি উদাহরণ টিপলস নয়, তারা স্ট্রিং। একক-আইটেমের টিউপসগুলিকে এখানে যেমন একটি পিছনে কমা প্রয়োজন:

>>> a = [('a',), ('b',), ('c', 'd')]
>>> a
[('a',), ('b',), ('c', 'd')]

11

('a') একটি টিপল নয়, কেবল একটি স্ট্রিং।

pythonএগুলি গ্রহণের জন্য আপনাকে শেষে অতিরিক্ত কমা যুক্ত করতে হবে tuple: -

>>> a = [('a',), ('b',), ('c', 'd')]
>>> a
[('a',), ('b',), ('c', 'd')]
>>> 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.