পাইথনে টুপলে তালিকায় রূপান্তর করুন


544

আমি একটি তালিকা টিউপলে রূপান্তর করার চেষ্টা করছি।

গুগলের বেশিরভাগ সমাধান নিম্নলিখিত কোডগুলি সরবরাহ করে:

l = [4,5,6]
tuple(l)

যাইহোক, কোডটি চালানোর সময় একটি ত্রুটি বার্তায় ফলাফল আসে:

TypeError: 'tuple' অবজেক্টটি কল করার যোগ্য নয় আমি কীভাবে এই সমস্যাটি সমাধান করতে পারি?


78
আপনি ভেরিয়েবলের নাম tupleআগে অন্য কোথাও দিয়েছিলেন?
ইউরোমো

18
মাত্রাতিরিক্ত বাছাই করা নয়, তবে আপনার সম্ভবত সম্ভবত "এল" কে ভেরিয়েবল নাম হিসাবে ব্যবহার করা উচিত নয় কারণ এটি 1 এর সাথে সাদৃশ্যযুক্ত S এমনকি "লি" তুলনায় অনেক বেশি পাঠযোগ্য।
অ্যালবার্ট রোথম্যান

উত্তর:


815

এটা ঠিক কাজ করা উচিত। ব্যবহার করবেন না tuple, listঅথবা একটি পরিবর্তনশীল নামের অন্যান্য বিশেষ নাম। এটি সম্ভবত আপনার সমস্যার কারণ ঘটছে।

>>> l = [4,5,6]
>>> tuple(l)
(4, 5, 6)

109

ইউরোয়ের মন্তব্যে প্রসারিত, সাধারণত tuple(l)একটি তালিকাটিকে একটি টুপলে রূপান্তরিত করে l:

In [1]: l = [4,5,6]

In [2]: tuple
Out[2]: <type 'tuple'>

In [3]: tuple(l)
Out[3]: (4, 5, 6)

তবে, আপনি যদি এর tupleপরিবর্তে একটি টিউপল হিসাবে নতুন সংজ্ঞা দিয়ে থাকেন type tuple:

In [4]: tuple = tuple(l)

In [5]: tuple
Out[5]: (4, 5, 6)

তখন টিপল নিজে কলযোগ্য নয় বলে আপনি একটি টাইপরেয়ার পান:

In [6]: tuple(l)
TypeError: 'tuple' object is not callable

আপনি tupleআপনার অনুবাদককে ছেড়ে দিয়ে এবং পুনরায় চালু করে বা (@glglgl কে ধন্যবাদ) এর মাধ্যমে মূল সংজ্ঞাটি পুনরুদ্ধার করতে পারেন :

In [6]: del tuple

In [7]: tuple
Out[7]: <type 'tuple'>

29

আপনি হয়ত এরকম কিছু করেছেন:

>>> tuple = 45, 34  # You used `tuple` as a variable here
>>> tuple
(45, 34)
>>> l = [4, 5, 6]
>>> tuple(l)   # Will try to invoke the variable `tuple` rather than tuple type.

Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    tuple(l)
TypeError: 'tuple' object is not callable
>>>
>>> del tuple  # You can delete the object tuple created earlier to make it work
>>> tuple(l)
(4, 5, 6)

সমস্যাটি এখানে ... যেহেতু আপনি tupleআগেরটি ধরে রাখতে ভেরিয়েবল ব্যবহার tuple (45, 34)করেছেন ... সুতরাং, এখন এখন টাইপের tupleএকটি objectবিষয় tuple...

এটি আর একটি নয় typeএবং তাই, এটি আর নেই Callable

Neverআপনার চলক নাম হিসাবে কোনও বিল্ট-ইন টাইপ ব্যবহার করুন ... আপনার ব্যবহারের অন্য কোনও নাম নেই। পরিবর্তে আপনার ভেরিয়েবলের জন্য যেকোন যথেচ্ছ নাম ব্যবহার করুন ...


25

tuple(l)পাইথন> এর মতো অন্য বিকল্প যুক্ত করতে = 3.5আপনি করতে পারেন:

t = *l,  # or t = (*l,) 

সংক্ষিপ্ত, কিছুটা দ্রুত তবে সম্ভবত পঠনযোগ্যতায় ভুগছে।

এটি মূলত lএকটি টিপল আক্ষরিকের মধ্যে তালিকাকে আনপ্যাক করে যা একক কমা উপস্থিতির কারণে তৈরি হয়েছিল ,


গীত: ERROR আপনি পাচ্ছেন কারণে নামের মাস্কিং হয় tupleঅর্থাত নাম tuple কোথাও যেমন নির্ধারিত tuple = (1, 2, 3)

del tupleআপনাকে ব্যবহার করা ভাল হবে।


4

আমি অনেক উত্তর আপ টু ডেট এবং সঠিকভাবে উত্তর পেয়েছি তবে উত্তরগুলির স্তুপে নতুন কিছু যুক্ত করব।

অজগরটিতে এটি করার জন্য অসীম উপায় রয়েছে, এখানে কিছু উদাহরণ রয়েছে
way

>>> l= [1,2,"stackoverflow","python"]
>>> l
[1, 2, 'stackoverflow', 'python']
>>> tup = tuple(l)
>>> type(tup)
<type 'tuple'>
>>> tup
(1, 2, 'stackoverflow', 'python')

ভালো রাস্তা বা পন্থা

>>>tuple(item for item in l)
(1, 2, 'stackoverflow', 'python')

মনে রাখবেন টিপল অপরিবর্তনীয়, মূল্যবান কিছু সঞ্চয় করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ পাসওয়ার্ড, কী বা হ্যাশগুলি টিপলস বা অভিধানে সংরক্ষণ করা হয়। যদি ছুরির প্রয়োজন হয় তবে কেন আপেল কাটতে তরোয়াল ব্যবহার করতে হবে। এটি বুদ্ধিমানের সাথে ব্যবহার করুন, এটি আপনার প্রোগ্রামকেও দক্ষ করে তুলবে।


2
দ্বিতীয় উপায় সুবিধা কি?
গ্রানী আঁচিং

স্মার্ট এই আধুনিক বিশ্বের সংজ্ঞা @ গ্রানিএচিং পরিবর্তন করে চলেছে, যেহেতু এটি একটি লাইনে করা অলস পদ্ধতির, তাই আমি অনুমান করি এটি স্মার্ট উপায়।
প্রাক্তন

1
tuple(l)(প্রথম উপায়) এর চেয়ে কম tuple(item for item in l)(দ্বিতীয় উপায়) is
গ্রানি আঁচিং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.