টুপলে ভেরিয়েবল যুক্ত করুন


282

আমি পাইথন শিখছি এবং একটি ডাটাবেস সংযোগ তৈরি করছি। ডিবিতে যুক্ত করার চেষ্টা করার সময়, আমি তথ্যের বাইরে টিপলগুলি তৈরি করার এবং তারপরে সেগুলি ডিবিতে যুক্ত করার কথা ভাবছি।

আমি যা করছি : আমি ব্যবহারকারীর কাছ থেকে তথ্য নিচ্ছি এবং এটি ভেরিয়েবলগুলিতে সঞ্চয় করছি। আমি কি এই ভেরিয়েবলগুলিকে একটি টিউপলে যুক্ত করতে পারি? আপনি দয়া করে সিনট্যাক্স সম্পর্কে আমাকে সাহায্য করতে পারেন?

এছাড়াও যদি এটি করার কোনও কার্যকর উপায় থাকে তবে দয়া করে ভাগ করুন ...

সম্পাদনা করুন আমাকে এই প্রশ্নটি কিছুটা সম্পাদনা করতে দিন ... আমার কেবলমাত্র ডিবিতে তথ্য প্রবেশের জন্য টিপল লাগবে। একবার ডিবিতে তথ্য যুক্ত হয়ে গেলে, আমি কী টিপলটি মুছব? মানে আমার আর টিপলের দরকার নেই।

উত্তর:


370

টিপলস অপরিবর্তনীয়; নির্মাণের পরে কোন ভেরিয়েবল রয়েছে তা আপনি পরিবর্তন করতে পারবেন না। যাইহোক, আপনি নতুন টিপলস গঠনের জন্য এগুলিকে সংমিশ্রণ বা টুকরো টুকরো করতে পারেন:

a = (1, 2, 3)
b = a + (4, 5, 6)  # (1, 2, 3, 4, 5, 6)
c = b[1:]  # (2, 3, 4, 5, 6)

এবং অবশ্যই বিদ্যমান মান থেকে এগুলি তৈরি করুন:

name = "Joe"
age = 40
location = "New York"
joe = (name, age, location)

ইউজার ইনপুট পরে কেবলমাত্র ডিবিতে যুক্ত করার জন্য আমার এই টিপলগুলির প্রয়োজন। ডিবিতে আপডেট শেষ হওয়ার পরে কি আমি এই টিপলগুলি ধ্বংস করব?
amit

5
ডিবি আপডেট করার পরে আপনাকে টিউপসগুলি ধ্বংস করতে হবে না। যদি তারা সুযোগের বাইরে যায় তবে তাদের উচিত জঞ্জাল সংগ্রহ করা।
জাস্টিন স্ট্যান্ডার্ড

ব্রেকিং স্ট্রিং নিজেই পরীক্ষা ছাড়া tuple করার জন্য একটি স্ট্রিং যোগ করার stackoverflow.com/a/16449189
Enzo Ferey

কেবল যোগ করার জন্য a = (), এবং b= a + (5), বি = 5 বাড়ে, সুতরাং, b= a + (5,)বাড়ে b = (5,); একটি tuple
yashgarg1232

221

আপনি ফাঁকা টিপল দিয়ে এমন কিছু দিয়ে শুরু করতে পারেন t = ()। আপনি এতে যুক্ত করতে পারেন তবে +আপনাকে আরও একটি টিপল যোগ করতে হবে। আপনি একটি একক উপাদান যুক্ত করতে চান তাহলে, এটি একটি Singleton করুন: t = t + (element,)। আপনি এই পিছনে কমা ছাড়াই বা ছাড়াই একাধিক উপাদানগুলির একটি যোগ করতে পারেন।

>>> t = ()
>>> t = t + (1,)
>>> t
(1,)
>>> t = t + (2,)
>>> t
(1, 2)
>>> t = t + (3, 4, 5)
>>> t
(1, 2, 3, 4, 5)
>>> t = t + (6, 7, 8,)
>>> t
(1, 2, 3, 4, 5, 6, 7, 8)

20
এই উদাহরণস্বরূপ, কেউ এটিও করতে পারে: t = ()তারপরেt += (1,)
ডগলাস ডেনহার্টোগ

2
পিছনে কমা অন্তর্ভুক্ত করে কী লাভ?

13
বন্ধনীগুলির মধ্যে কোনও উপাদানগুলির মধ্যে বিভ্রান্তি এড়াতে সিঙ্গলটনের জন্য চলমান কমা সি প্রয়োজনীয়। সমতলের বন্ধনী ক্রিয়াকলাপের জন্য ব্যবহৃত হয়, সুতরাং ()) মাত্র 7.. তবে (,,) এমন এক-উপাদান উপাদান যেখানে 7.. একইভাবে, 3 * (7 + 8) = 45, তবে 3 * ( 7 + 8,) = (15, 15, 15) - এর অর্থ কী?
ড্যানিয়েল

2
মাল্টি-এলিমেন্ট টিউপলস হিসাবে, অনুগামী কমাটি 100% alচ্ছিক। "এটি একটি টিপল, আমি জানি এটি একটি টিপল, আমি জানি যে কীভাবে টিপলস কাজ করে, এবং আমি জানি যে আমি এটি করতে পারি" " তবে কোনও কমা আরও প্রাকৃতিক বলে মনে হচ্ছে না। Idk। আপনার উপর
ড্যানিয়েল

আমি মনে করি যে টিপলগুলি অপরিবর্তনীয় - এটি আসলে পরিবর্তন করা যায় না important এই সমাধানটি যা করে তা হ'ল দুটি বিদ্যমান টিউপলের উপর ভিত্তি করে একটি নতুন টিপল তৈরি করা ।
That1Guy

44

এখনও উল্লেখ করা হয়নি এমন অন্য কৌশলটি তালিকায় সংযোজন এবং তারপরে তালিকার শেষে একটি টিপলে রূপান্তর করা:

mylist = []
for x in range(5):
    mylist.append(x)
mytuple = tuple(mylist)
print mytuple

আয়

(0, 1, 2, 3, 4)

আমি কখনও কখনও এটি ব্যবহার করি যখন আমাকে একটি ফাংশন আর্গুমেন্ট হিসাবে একটি টুপল পাস করতে হয়, যা প্রায়শই নিম্পী ফাংশনের জন্য প্রয়োজনীয়।


3
এটি বিপরীত অর্থাত্ও list(someTuple)কাজ করে তা জেনে রাখা কার্যকর । দুটি অবজেক্টের
ধরণগুলি

আসলেই মতবিনিময়যোগ্য নয়, আমি ভাবি যে টুপল থেকে তালিকায় রূপান্তরটি তালিকার সমস্ত উপাদানকে অনুলিপি করবে, তাই এড়াতে অবশ্যই জায়গা আছে
gbtimmon

41

পাইথন 3 এ, আপনি *নতুন উপাদানটির সাথে মূল টিপল থেকে উপাদানগুলির একটি নতুন টিপল তৈরি করতে ব্যবহার করতে পারেন ।

>>> tuple1 = ("foo", "bar")
>>> tuple2 = (*tuple1, "baz")
>>> tuple2
('foo', 'bar', 'baz')

2
এটি আমার কাছে এখন পর্যন্ত সবচেয়ে অজগর।
বমসিক কিম

6
এটি 10x এর চেয়ে ধীরtuple1 + ("baz",)
মতিন উলহাক

9

"একবার তথ্য ডিবিতে যুক্ত হওয়ার পরে, আমি কি টিউপলটি মুছতে পারি? মানে আমার আর এই টিপলের দরকার নেই" "

না।

সাধারণত, কোনও কিছু মুছার কোনও কারণ নেই। মুছে ফেলার জন্য কয়েকটি বিশেষ মামলা রয়েছে তবে সেগুলি খুব খুব বিরল।

কেবল একটি সংকীর্ণ সুযোগ (যেমন, কোনও ক্রমের সংজ্ঞা বা কোনও শ্রেণীর কোনও পদ্ধতি ফাংশন) সংজ্ঞায়িত করুন এবং অবজেক্টগুলি সুযোগের শেষে সংগ্রহ করা আবর্জনা হবে।

কিছু মুছে ফেলার বিষয়ে চিন্তা করবেন না।

[বিঃদ্রঃ. আমি এমন একটি ছেলের সাথে কাজ করেছি যিনি - অবজেক্টগুলি মুছতে চেষ্টা করার সাথে - সর্বদা সেগুলি মুছে ফেলার জন্য "পুনরায় সেট" পদ্ধতি লিখছিলেন। যেমন তিনি তাদের বাঁচাতে এবং তাদের পুনরায় ব্যবহার করতে যাচ্ছেন। একটি বোকা ধারণা। আপনি যে জিনিসগুলি আর ব্যবহার করছেন না কেবল তা উপেক্ষা করুন। আপনি যদি কোডগুলি ক্ষুদ্র পর্যায়ে পর্যাপ্ত ব্লকগুলিতে আপনার ফাংশনগুলি সংজ্ঞায়িত করেন তবে আপনার ভাবার মতো আর কিছুই নেই]]


7

এটি নিম্নলিখিতগুলির মতো সহজ:

info_1 = "one piece of info"
info_2 = "another piece"
vars = (info_1, info_2)
# 'vars' is now a tuple with the values ("info_1", "info_2")

তবে পাইথনের টিউপসগুলি অপরিবর্তনীয় , সুতরাং এটি একবার তৈরি হওয়ার পরে আপনি একটি টিউলে ভেরিয়েবল যুক্ত করতে পারবেন না।


3

অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছে, আপনি একটি বিদ্যমান টিপল পরিবর্তন করতে পারবেন না তবে আপনি সর্বদা একটি নতুন টিপল তৈরি করতে পারেন (যা বিদ্যমান টিপলস এবং / বা অন্যান্য উত্স থেকে কিছু বা সমস্ত আইটেম নিতে পারে)।

উদাহরণস্বরূপ, যদি আগ্রহের সমস্ত আইটেমগুলি স্কেলার ভেরিয়েবলগুলিতে থাকে এবং আপনি সেই ভেরিয়েবলগুলির নামগুলি জানেন:

def maketuple(variables, names):
  return tuple(variables[n] for n in names)

উদাহরণস্বরূপ, যেমন ব্যবহার করা হবে:

def example():
  x = 23
  y = 45
  z = 67
  return maketuple(vars(), 'x y z'.split())

অবশ্যই এই একটি কেস আরও সহজভাবে প্রকাশ করা হবে (x, y, z)(বা এমনকি নামগুলি পুরোপুরি পূর্বেও বলা যেতে পারে (23, 45, 67)) তবে এ maketupleপদ্ধতিটি আরও জটিল কিছু ক্ষেত্রে কার্যকর হতে পারে (যেমন ব্যবহারের জন্য নামগুলিও গতিশীলভাবে নির্ধারিত হয় এবং সময়কালে একটি তালিকায় সংযুক্ত থাকে) গণনার)।


2

আমি খুব নিশ্চিত যে অজগরের জন্য এর বাক্য গঠনটি হ'ল:

user_input1 = raw_input("Enter Name: ")
user_input2 = raw_input("Enter Value: ")
info = (user_input1, user_input2)

একবার সেট হয়ে গেলে, টিপলগুলি পরিবর্তন করা যায় না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.