পাইথন: একটি টিপলে মান পরিবর্তন করা


124

আমি অজগরে নতুন তাই এই প্রশ্নটি কিছুটা বেসিক হতে পারে। আমার কাছে একটি টিপল valuesরয়েছে যার মধ্যে নিম্নলিখিত রয়েছে:

('275', '54000', '0.0', '5000.0', '0.0')

আমি প্রথম মানটি (যেমন, 275 এই টিউপলিতে ) তবে আমি বুঝতে পারি যে টিপলগুলি অপরিবর্তনীয় তাই কার্যকর values[0] = 200হবে না। আমি কীভাবে এটি অর্জন করতে পারি?


24
tuples হয় অপরিবর্তনীয় , আপনি এই অর্জন করার একটি নতুন tuple তৈরি করতে হবে।
হান্টার ম্যাকমিলেন

উত্তর:


178

প্রথমে আপনাকে জিজ্ঞাসা করা দরকার কেন আপনি এটি করতে চান?

তবে এটি এর মাধ্যমে সম্ভব:

t = ('275', '54000', '0.0', '5000.0', '0.0')
lst = list(t)
lst[0] = '300'
t = tuple(lst)

তবে আপনার যদি জিনিসগুলির পরিবর্তন করার প্রয়োজন হয় তবে আপনি সম্ভবত এটি হিসাবে রাখা ভাল list


4
একটি ব্যবহারের ক্ষেত্রে হ'ল যদি আপনি প্রচুর পরিমাণে ছোট ছোট সিকোয়েনগুলি সঞ্চয় করে থাকেন যেখানে মানগুলি খুব কমই পরিবর্তিত হয় তবে কয়েকটি ইভেন্টে তারা চান। একটি ছোট তবে অ-শূন্য দৈর্ঘ্যের ক্রমের জন্য, টিপল (এক-উপাদানের জন্য 60-বাইট) বনাম তালিকার (104 বাইট) মেমরির ব্যবহার এবং একটি পার্থক্য তৈরি করে। নাম ব্যবহারকারীর জন্য আর একটি ব্যবহারের ক্ষেত্র হ'ল নাম তালিকাভুক্ত স্থানীয়ভাবে বিদ্যমান নেই।
মাইকেল স্কট কুথবার্ট

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

9
@ আর্টফোকি একটি অপরিবর্তনীয় পাত্রে রূপান্তর করতে চাইছেন (সুতরাং "কেন" খুব কার্যকর প্রশ্ন) বিভিন্ন ফর্ম্যাটকে ব্যাখ্যা করার চেয়ে আলাদা, যার কয়েকটি টিউপল হতে পারে। যদিও বের করার জন্য ধন্যবাদ :)
জন ক্লিমেটস

7
মনে হয় এটি অপ্রয়োজনীয় এবং মেমরির তালিকায় পুনরায় সংক্ষেপে অস্থায়ী পরিবর্তনশীল ব্যবহার করতে অক্ষম। আপনি ঠিক একই নামের সাথে একটি টুপলে আনপ্যাক করতে পারেন এবং আপডেটের যা প্রয়োজন আপডেট আনপ্যাক করার সময়।
ব্রায়ান স্পিয়ারিং

5
@ জোনক্লিমেন্টস আপনি একটি খুব মূল্যবান বক্তব্য রেখেছেন যে এটি করা খারাপ অভ্যাস। এটি আপনার উত্তরে হওয়া উচিত । তবে অলঙ্কৃত প্রশ্নগুলি প্রায়শই অযৌক্তিকভাবে আপত্তিজনক বলে ব্যাখ্যা করা হয়। এই জাতীয় তথ্য ফর্মটিতে আরও ভালভাবে কাঠামোযুক্ত করা হয়েছে: "এটি খারাপ অভ্যাস কারণ ..." বা "আপনার যদি সত্যিই এটির প্রয়োজন হয় তবে সাবধানতার সাথে বিবেচনা করুন; এটি সাধারণত নকশায় একটি ত্রুটি বোঝায় কারণ ..."
ফিলিপ কুলিং

74

আপনার সমস্যার উপর নির্ভর করে কাটা কাটা সত্যিই ঝরঝরে সমাধান হতে পারে:

>>> b = (1, 2, 3, 4, 5)
>>> b[:2] + (8,9) + b[3:]
(1, 2, 8, 9, 4, 5)
>>> b[:2] + (8,) + b[3:]
(1, 2, 8, 4, 5)

এটি আপনাকে একাধিক উপাদান যুক্ত করতে বা কয়েকটি উপাদান প্রতিস্থাপন করতে সক্ষম করে (বিশেষত যদি তারা "প্রতিবেশী" হয় তবে উপরের ক্ষেত্রে একটি তালিকায় কাস্টিং সম্ভবত আরও উপযুক্ত এবং পাঠযোগ্য) (স্লাইসিং স্বরলিপিটি আরও সংক্ষিপ্ত হলেও)।


24

ঠিক আছে, ট্রুফা যেমন ইতিমধ্যে দেখিয়েছে, প্রদত্ত সূচকে টিপলের উপাদান প্রতিস্থাপনের মূলত দুটি উপায় রয়েছে। হয় টিপলটিকে একটি তালিকায় রূপান্তর করুন, উপাদানটি প্রতিস্থাপন করুন এবং ফিরে রূপান্তর করুন, বা সংক্ষিপ্তকরণের মাধ্যমে একটি নতুন টিপল তৈরি করুন।

In [1]: def replace_at_index1(tup, ix, val):
   ...:     lst = list(tup)
   ...:     lst[ix] = val
   ...:     return tuple(lst)
   ...:

In [2]: def replace_at_index2(tup, ix, val):
   ...:     return tup[:ix] + (val,) + tup[ix+1:]
   ...:

সুতরাং, কোন পদ্ধতিটি আরও ভাল, এটি দ্রুত?

এটি দেখা যাচ্ছে যে সংক্ষিপ্ত টিপলগুলির জন্য (পাইথন ৩.৩-এ), কনক্যাটেনশন আসলে দ্রুত!

In [3]: d = tuple(range(10))

In [4]: %timeit replace_at_index1(d, 5, 99)
1000000 loops, best of 3: 872 ns per loop

In [5]: %timeit replace_at_index2(d, 5, 99)
1000000 loops, best of 3: 642 ns per loop

তবুও যদি আমরা লম্বা টিপলগুলিতে নজর রাখি তবে তালিকা রূপান্তর হ'ল উপায়:

In [6]: k = tuple(range(1000))

In [7]: %timeit replace_at_index1(k, 500, 99)
100000 loops, best of 3: 9.08 µs per loop

In [8]: %timeit replace_at_index2(k, 500, 99)
100000 loops, best of 3: 10.1 µs per loop

খুব দীর্ঘ টিউপসগুলির জন্য, তালিকা রূপান্তর যথেষ্ট উন্নত!

In [9]: m = tuple(range(1000000))

In [10]: %timeit replace_at_index1(m, 500000, 99)
10 loops, best of 3: 26.6 ms per loop

In [11]: %timeit replace_at_index2(m, 500000, 99)
10 loops, best of 3: 35.9 ms per loop

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

In [12]: %timeit replace_at_index1(m, 900000, 99)
10 loops, best of 3: 26.6 ms per loop

In [13]: %timeit replace_at_index2(m, 900000, 99)
10 loops, best of 3: 49.2 ms per loop

সুতরাং: আপনার টিপলটি যদি সংক্ষিপ্ত হয় তবে টুকরো টুকরো টুকরো টুকরো হয়ে উঠুন। যদি এটি দীর্ঘ হয় তবে তালিকার রূপান্তরটি করুন!


1
@ এরিক অ্যারোনাস্টি সবসময় নয়। একবার দরকারী কেসটি এমন এক শ্রেণীর বাড়িয়ে দিচ্ছে যা আপনি পরিবর্তন করতে পারবেন না এবং যার পদ্ধতিগুলি এমন একটি টুপল ফেরত দেয় যা থেকে আপনি কেবলমাত্র প্রথম উপাদানটি পরিবর্তন করতে চান। রিটার্ন (ভাল,) + রেজ [1:] রেজি 2 = তালিকা (পুনরায়) এর চেয়ে পরিষ্কার; res2 [0] = ভাল; ফিরতি tuple (res2)
yucer

9

এটি একটি লাইনারের সাহায্যে সম্ভব:

values = ('275', '54000', '0.0', '5000.0', '0.0')
values = ('300', *values[1:])

1
এটি দিয়ে আপনি কীভাবে কেবল তৃতীয় উপাদানটি পরিবর্তন করবেন values?
sdbbs

2
আপনি কীভাবে কোনও উপাদানকে কোনও উপাদানকে পরিবর্তন করতে পারেন তা এখানে -i = 2; values = (*values[:i], '300', *values[i+1:])
ব্রায়ান স্পাইরিং

8

এটি সর্বোত্তম নয়, তবে যদি কেউ আগ্রহী হন তবে এটির সাথে এক লাইনে এটি করা যেতে পারে:

tuple = tuple([200 if i == 0 else _ for i, _ in enumerate(tuple)])

এর চেয়ে দ্রুত tuple = tuple(200 if i == 0 else _ for i, _ in enumerate(tuple))? (কেন জেনারেটর উপলব্ধি নেই?)
বেনামে

8

আমি বিশ্বাস করি এটি প্রযুক্তিগতভাবে প্রশ্নের উত্তর দেয় তবে বাড়িতে এটি করবেন না। এই মুহুর্তে, সমস্ত উত্তরগুলিতে একটি নতুন টিউপল তৈরি করা জড়িত তবে আপনি ctypesস্মৃতিতে একটি টিপল পরিবর্তন করতে ব্যবহার করতে পারেন । Y৪-বিট সিস্টেমে সিপিথনের বিভিন্ন প্রয়োগের বিশদ নির্ভর করে, এটি করার একটি উপায় নিম্নরূপ:

def modify_tuple(t, idx, new_value):
    # `id` happens to give the memory address in CPython; you may
    # want to use `ctypes.addressof` instead.
    element_ptr = (ctypes.c_longlong).from_address(id(t) + (3 + idx)*8)
    element_ptr.value = id(new_value)
    # Manually increment the reference count to `new_value` to pretend that
    # this is not a terrible idea.
    ref_count = (ctypes.c_longlong).from_address(id(new_value))
    ref_count.value += 1

t = (10, 20, 30)
modify_tuple(t, 1, 50)   # t is now (10, 50, 30)
modify_tuple(t, -1, 50)  # Will probably crash your Python runtime

1
সাধারণ উত্তরগুলির চেয়ে আলাদা কিছু জানতে সর্বদা ভাল। চিয়ার্স!
কর্থেক পালেপু

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

1
আপনি যে মূল্যটি বাতিল করছেন তা রেফারেন্স গণনা হ্রাস করতে ভুলে গেছেন। এর ফলে ফুটো হবে।
wizzwizz4

6

হান্টার ম্যাকমিলেন মন্তব্যগুলিতে যেমন লিখেছেন, টিউপসগুলি পরিবর্তনযোগ্য, তাই এটি অর্জনের জন্য আপনাকে একটি নতুন টিউপল তৈরি করতে হবে। এই ক্ষেত্রে:

>>> tpl = ('275', '54000', '0.0', '5000.0', '0.0')
>>> change_value = 200
>>> tpl = (change_value,) + tpl[1:]
>>> tpl
(200, '54000', '0.0', '5000.0', '0.0')

3

সম্পাদনা: এটি এখনও সদৃশ এন্ট্রি সহ tuples কাজ করে না !!

পুয়ার ধারণার ভিত্তিতে :

যদি আপনি প্রায়শই এটি করার পরিকল্পনা করে থাকেন (যা আপনাকে কারণ হিসাবে টিউপসগুলি অবিচ্ছেদ্য না হয়) আপনার এ জাতীয় কিছু করা উচিত:

def modTupByIndex(tup, index, ins):
    return tuple(tup[0:index]) + (ins,) + tuple(tup[index+1:])

print modTupByIndex((1,2,3),2,"a")

বা জনের ধারণার ভিত্তিতে :

def modTupByIndex(tup, index, ins):
    lst = list(tup)
    lst[index] = ins
    return tuple(lst)

print modTupByIndex((1,2,3),1,"a")

3

হিমশিম খাওয়া, নিজেকে জিজ্ঞাসা করুন আপনি কেন নিজের রূপান্তর করতে চান tupleএকটা কারণ কেন আছে স্ট্রিং এবং tuple Ptyhon মধ্যে অপরিবর্তনীয় হয় , আপনি পরিবর্তন ঘটান করতে চান তাহলে আপনার tupleতারপর এটি সম্ভবত একটি হওয়া উচিতlist পরিবর্তে।

দ্বিতীয়ত, যদি আপনি এখনও আপনার tuple পরিবর্তন ঘটান করতে ইচ্ছুক তারপর আপনি আপনার রূপান্তর করতে পারেন tupleএকটি থেকে listতারপর, এটা ফিরে রূপান্তর, এবং একই পরিবর্তনশীল নতুন tuple reassign। এটি দুর্দান্ত তবে যদি আপনি কেবল একবার আপনার টিউপলকে পরিবর্তন করতে চলেছেন । অন্যথায়, আমি ব্যক্তিগতভাবে মনে করি এটি বিপরীত। কারণ এটি মূলত একটি নতুন টিউপল তৈরি করছে এবং প্রতিবার আপনি যদি টিউপলকে রূপান্তর করতে চান তবে আপনাকে রূপান্তরটি সম্পাদন করতে হবে। এছাড়াও আপনি যদি কোডটি পড়ে থাকেন তবে এটি ভেবে বিভ্রান্ত হবে কেন কেবল একটি তৈরি করবেন নাlist ? তবে এটি দুর্দান্ত কারণ এটির জন্য কোনও লাইব্রেরির প্রয়োজন নেই।

আমি মিউটলেটআপ ০.২mutabletuple(typename, field_names, default=MtNoDefault) থেকে ব্যবহার করার পরামর্শ দিই । আমি ব্যক্তিগতভাবে এই উপায়টি আরও স্বজ্ঞাত এবং পাঠযোগ্য বলে মনে করি ব্যক্তিগত কোডটি পড়লে জানতে পারে যে লেখক ভবিষ্যতে এই টিপলটিকে পরিবর্তিত করতে চান। ডাউনসাইডটি listউপরের রূপান্তর পদ্ধতির সাথে তুলনা করে এটির জন্য আপনাকে অতিরিক্ত পাই ফাইল আমদানি করতে হবে।

from mutabletuple import mutabletuple

myTuple = mutabletuple('myTuple', 'v w x y z')
p = myTuple('275', '54000', '0.0', '5000.0', '0.0')
print(p.v) #print 275
p.v = '200' #mutate myTuple
print(p.v) #print 200

টিএল; ডিআর : পরিবর্তনের চেষ্টা করবেন না tuple। যদি আপনি এটি করেন এবং এটি যদি এককালীন অপারেশন tupleহয় তবে তালিকায় রূপান্তর করুন, এটিকে রূপান্তর করুন, listনতুন রূপান্তর করুন tupleএবং পুরানো ভেরিয়েবলটিতে পুনরায় সাইন করুন tuple। যদি ইচ্ছা tupleএবং কোনওভাবে এড়াতে listচান এবং একাধিকবার পরিবর্তন করতে চান তবে তৈরি করুন mutabletuple


2

জনের আইডিয়া এবং প্রিয় ট্রুফার উপর ভিত্তি করে

def modifyTuple(tup, oldval, newval):
    lst=list(tup)
    for i in range(tup.count(oldval)):
        index = lst.index(oldval)
        lst[index]=newval

    return tuple(lst)

print modTupByIndex((1, 1, 3), 1, "a")

এটি আপনার সমস্ত পুরানো মানগুলির উপস্থিতি পরিবর্তন করে


এটি বেশ অস্বস্তিকর হবে (আরও ভাল শব্দের অভাবের জন্য) যদি আপনি একাধিক মান পরিবর্তন করতে চান তবে আবার, আপনি কেন প্রথমে একটি
দ্বৈত

@ ট্রফা হ্যাঁ, আমি এটি লেখার চেষ্টা করছি: ডি
পুয়া

পদ্ধতির নামটি পরিবর্তন করুন_আপনি_বিন্দু সূচকটি ভুল এবং বিভ্রান্তির কারণ হতে বাধ্য।
এমএসডাব্লু

1

আপনি পারবেন না। আপনি যদি এটি পরিবর্তন করতে চান তবে আপনাকে টিপলের পরিবর্তে একটি তালিকা ব্যবহার করতে হবে।

নোট করুন যে পরিবর্তে আপনি একটি নতুন টুপল তৈরি করতে পারেন যার নতুন উপাদানটির এটির প্রথম উপাদান হিসাবে রয়েছে।


0

আমি টিউপসগুলি সম্পাদনা করার সর্বোত্তম উপায়টি খুঁজে পেয়েছি টিপলটিকে পূর্বের সংস্করণটিকে বেস হিসাবে ব্যবহার করে পুনরায় তৈরি করা।

আমি এখানে একটি রঙের হালকা সংস্করণ তৈরি করার জন্য ব্যবহার করেছি এমন একটি উদাহরণ রয়েছে (আমি এটি ইতিমধ্যে এটি ইতিমধ্যে উন্মুক্ত করেছিলাম):

colour = tuple([c+50 for c in colour])

এটি কী করে, এটি কী টিউপল 'রঙ' এর মধ্য দিয়ে যায় এবং প্রতিটি আইটেম পড়ে, এটিতে কিছু করে, এবং শেষ পর্যন্ত এটি নতুন টিপলে যুক্ত করে।

সুতরাং আপনি যা চান তা এমন কিছু হবে:

values = ('275', '54000', '0.0', '5000.0', '0.0')

values  = (tuple(for i in values: if i = 0: i = 200 else i = values[i])

এই নির্দিষ্টটি কাজ করে না, তবে ধারণাটি আপনার প্রয়োজন।

tuple = (0, 1, 2)

tuple = tuple এর মাধ্যমে পুনরাবৃত্তি, প্রতিটি আইটেমকে প্রয়োজন অনুসারে পরিবর্তন করুন

এটাই ধারণা।


0

আমি গেমটি দেরিতে করেছি তবে আমার মনে হয় সবচেয়ে সহজ , রিসোর্স-ফ্রেন্ডলিস্ট এবং দ্রুততম উপায় (পরিস্থিতির উপর নির্ভর করে) টিউপলটি নিজেই ওভাররাইট করা। যেহেতু এটি তালিকা এবং পরিবর্তনশীল তৈরির প্রয়োজনীয়তা সরিয়ে ফেলবে এবং এক লাইনে সংরক্ষণাগারভুক্ত হবে।

new = 24
t = (1, 2, 3)
t = (t[0],t[1],new)

>>> (1, 2, 24)

তবে: এটি কেবলমাত্র ছোট টিউপলগুলির জন্য কার্যকর এবং এটি আপনাকে একটি স্থির দ্বিগুণ মানের সীমাবদ্ধ করে, তবুও, যাইহোক, বেশিরভাগ সময়ই টিপলসের ক্ষেত্রে এটিই ঘটে।

সুতরাং এই বিশেষ ক্ষেত্রে এটি দেখতে এই রকম হবে:

new = '200'
t = ('275', '54000', '0.0', '5000.0', '0.0')
t = (new, t[1], t[2], t[3], t[4])

>>> ('200', '54000', '0.0', '5000.0', '0.0')

এটি কেবল তখনই কাজ করে যদি এটি জ্ঞাত দৈর্ঘ্য সহ স্থির টুপল হয়। কোডটি সম্ভবত খুব তাড়াতাড়ি বা পরে ব্যর্থ হবে কারণ এটি খুব নির্দিষ্ট ...
প্যাট্রোকুইট

হ্যাঁ - @ পেট্রোকুইয়েট, অতএব আমি পরিষ্কারভাবে এই পদ্ধতির ডাউনসাইডগুলি জানিয়েছি, তবে: ...- এর পরে। দয়া করে আপনার ডাউনটাতে পুনর্বিবেচনা করুন, ধন্যবাদ;)
গর্ডানট্রেভিস

1
আরে, পুনরায় বিবেচনা করা হয়েছে এবং বোতামটি ক্লিক করেছেন। তবে ভোট এখন এসও দ্বারা লক হয়েছে: /
প্যাট্রোকুইট

0

tldr; "workaround" একটি নতুন টিপল অবজেক্ট তৈরি করছে, আসলে আসলটি পরিবর্তন করে না

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

আমি আমার তত্ত্বটি প্রমাণ করার জন্য কিছু পরীক্ষা চালিয়েছি

রেফারেন্সিয়াল ==সমতা করার সময় নোটটি সমতাকে মূল্য isদেয় (আপত্তি খ হিসাবে একই উদাহরণ হিসাবে আপত্তিজনক)

a = ("apple", "canana", "cherry")
b = tuple(["apple", "canana", "cherry"])
c = a

print("a: " + str(a))
print("b: " + str(b))
print("c: " + str(c))
print("a == b :: %s" % (a==b))
print("b == c :: %s" % (b==c))
print("a == c :: %s" % (a==c))
print("a is b :: %s" % (a is b))
print("b is c :: %s" % (b is c))
print("a is c :: %s" % (a is c))

d = list(a)
d[1] = "kiwi"
a = tuple(d)

print("a: " + str(a))
print("b: " + str(b))
print("c: " + str(c))
print("a == b :: %s" % (a==b))
print("b == c :: %s" % (b==c))
print("a == c :: %s" % (a==c))
print("a is b :: %s" % (a is b))
print("b is c :: %s" % (b is c))
print("a is c :: %s" % (a is c))

উৎপাদনের:

a: ('apple', 'canana', 'cherry')
b: ('apple', 'canana', 'cherry')
c: ('apple', 'canana', 'cherry')
a == b :: True
b == c :: True
a == c :: True
a is b :: False
b is c :: False
a is c :: True
a: ('apple', 'kiwi', 'cherry')
b: ('apple', 'canana', 'cherry')
c: ('apple', 'canana', 'cherry')
a == b :: False
b == c :: True
a == c :: False
a is b :: False
b is c :: False
a is c :: False

0

আপনি টুপলে আইটেমগুলি সংশোধন করতে পারবেন না, তবে আপনি টিউপসগুলিতে পরিবর্তনযোগ্য বস্তুর বৈশিষ্ট্যগুলি সংশোধন করতে পারেন (উদাহরণস্বরূপ যদি সেই বস্তুগুলি তালিকাগুলি বা প্রকৃত শ্রেণীর অবজেক্ট হয়)

উদাহরণ স্বরূপ

my_list = [1,2]
tuple_of_lists = (my_list,'hello')
print(tuple_of_lists) # ([1, 2], 'hello')
my_list[0] = 0
print(tuple_of_lists) # ([0, 2], 'hello')

-2

আমি এটা করেছি:

list = [1,2,3,4,5]
tuple = (list)

এবং পরিবর্তন করতে, ঠিক আছে

list[0]=6

এবং আপনি একটি টুপল পরিবর্তন করতে পারেন: ডি

এখানে এটি IDLE থেকে হুবহু অনুলিপি করা হয়েছে

>>> list=[1,2,3,4,5,6,7,8,9]

>>> tuple=(list)

>>> print(tuple)

[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> list[0]=6

>>> print(tuple)

[6, 2, 3, 4, 5, 6, 7, 8, 9]

2
tuple একটি তালিকা, একটি tuple নয়। x = (y)x কে y নির্ধারণ করা ছাড়া কিছুই করে না।
m4tx

2
ভেরিয়েবল হিসাবে "টিপল" এবং "তালিকা" নামটি ব্যবহার করে, আপনি পরে টিপল এবং তালিকার ধরণের তুলনা করা শক্ত করে তুলবেন।
মাইকেল স্কট কুথবার্ট

-4

আপনি রেফারেন্স দ্বারা অনুলিপি ব্যবহার করে টিপলের মান পরিবর্তন করতে পারেন

>>> tuple1=[20,30,40]

>>> tuple2=tuple1

>>> tuple2
    [20, 30, 40]

>>> tuple2[1]=10

>>> print(tuple2)
    [20, 10, 40]

>>> print(tuple1)
    [20, 10, 40]

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