.Join () পদ্ধতিটি ঠিক কী করে?


209

আমি পাইথনের কাছে বেশ নতুন এবং সম্পূর্ণ বিভ্রান্ত হয়ে .join()পড়েছি যা দ্বারা আমি পড়েছি স্ট্রেনকেটেনটিং স্ট্রিংগুলির জন্য পছন্দসই পদ্ধতি।

আমি চেষ্টা করেছিলাম:

strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
    .tostring().join(strid)

এবং এর মতো কিছু পেয়েছি:

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5

কেন এটি এভাবে কাজ করে? 595কেবলমাত্র স্বয়ংক্রিয়ভাবে সংযোজন করা উচিত নয় ?


1
আমি মনে করি আপনি প্রোগ্রামটি চলাকালীন আপনি আপনার ইউবিকে ট্যাপ করেছেন
ট্রেনটন

উত্তর:


303

আপনার আউটপুট সাবধানে দেখুন:

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
^                 ^                 ^

আমি আপনার মূল স্ট্রিংয়ের "5", "9", "5" হাইলাইট করেছি। পাইথন join()পদ্ধতিটি একটি স্ট্রিং পদ্ধতি এবং স্ট্রিংয়ের সাথে যোগ দিতে জিনিসগুলির একটি তালিকা গ্রহণ করে। একটি সহজ উদাহরণ ব্যাখ্যা করতে সাহায্য করতে পারে:

>>> ",".join(["a", "b", "c"])
'a,b,c'

"," প্রদত্ত তালিকার প্রতিটি উপাদানের মধ্যে সন্নিবেশ করা হয়। আপনার ক্ষেত্রে, আপনার "তালিকা" হ'ল স্ট্রিং প্রতিনিধিত্ব "595", যা তালিকা হিসাবে বিবেচিত হয় ["5", "9", "5"]।

পরিবর্তে এটির জন্য আপনি সন্ধান করছেন বলে মনে হচ্ছে +:

print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid

1
এটি কেন হয় না: 5WlfgALGbXOahekxSs9wlfgALGbXOahekxSs5wlfgALGbXOahekxSs? শেষ উপাদানটিতে স্ট্রিং যুক্ত হয়েছে?
ম্যাট ম্যাককর্মিক


4
আপনি যদি অন্য একটি সীমানার চান, আপনার তালিকার শেষে একটি খালি স্ট্রিং রাখুন। ','.join(['a', 'b', 'c', ''])"একটি, B, C," দেয়
tgray

9
ওপি সম্ভবত বিভ্রান্তিকর string.joinছিল os.path.joinযা দিয়ে সত্যই পথগুলিকে একত্রিত করে
হুয়ান ক্যাম্পা

91

joinআর্গুমেন্ট হিসাবে পুনরাবৃত্তিযোগ্য জিনিস নেয়। সাধারণত এটি একটি তালিকা। আপনার ক্ষেত্রে সমস্যাটি হ'ল স্ট্রিংটি নিজেই পুনরাবৃত্তিযোগ্য এবং প্রতিটি অক্ষরকে ঘুরে ফিরে দেয়। আপনার কোড এতে বিভক্ত হয়:

"wlfgALGbXOahekxSs".join("595")

যা এই হিসাবে একই কাজ করে:

"wlfgALGbXOahekxSs".join(["5", "9", "5"])

এবং তাই আপনার স্ট্রিং উত্পাদন:

"5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5"

পুনরাবৃত্ত হিসাবে স্ট্রিংগুলি পাইথনের সবচেয়ে বিভ্রান্তিমূলক সূচনা বিষয়।


8
বিভ্রান্তির শিখর কী হতে পারে তা নির্দেশ করার জন্য আপভোট করুন: স্ট্রিংগুলি পুনরাবৃত্ত হয় তাই তারা অক্ষরের তালিকার মতো কাজ করে।
ড্যানিয়েল বেয়ার্ড

59

একটি স্ট্রিং সংযোজন করতে, কেবল +চিহ্ন দিয়ে এটি যুক্ত করুন।

যেমন

>>> a = "Hello, "
>>> b = "world"
>>> str = a + b
>>> print str
Hello, world

joinস্ট্রিংগুলি একটি বিভাজকের সাথে সংযুক্ত করে। বিভাজক হ'ল আপনি যা ঠিক সামনে রেখেছেন join। যেমন

>>> "-".join([a,b])
'Hello, -world'

যোগদান প্যারামিটার হিসাবে স্ট্রিংয়ের একটি তালিকা নেয় Join


5
এই জাতীয় প্রত্যক্ষ এবং সংক্ষিপ্ত উত্তরটি আমাদের সম্প্রদায় দ্বারা সমর্থন করা উচিত। @ ড্যান
দেহেঙ্গে

7

যোগ দিন () সমস্ত তালিকার উপাদানগুলিকে একত্রিত করার জন্য। মাত্র দুটি স্ট্রিং সংশ্লেষ করার জন্য "+" আরও অর্থবোধ করবে:

strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
    .tostring() + strid

4

অন্যেরা কী বলছেন সে সম্পর্কে আরও কিছুটা প্রসারিত করার জন্য, আপনি যদি কেবল নিজের দুটি স্ট্রিং সংক্ষেপে যোগ করতে ব্যবহার করতে চান তবে আপনি এটি করতে পারেন:

strid = repr(595)
print ''.join([array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
    .tostring(), strid])

2

সেখানে কেন এটা ব্যয়বহুল ব্যবহার করা একটি ভাল ব্যাখ্যা +স্ট্রিং সংখ্যক concatenating জন্য এখানে

দুটি পাইথন স্ট্রিং সংযুক্ত করার জন্য প্লাস অপারেটর পুরোপুরি সূক্ষ্ম সমাধান । তবে আপনি যদি আরও দুটি স্ট্রিং যুক্ত করেন (n> 25), আপনি অন্য কিছু ভাবতে চাইতে পারেন।

''.join([a, b, c]) কৌশল একটি কর্মক্ষমতা অপ্টিমাইজেশন।


0

এটিকে ইনপুট হিসাবে সরবরাহ করার সময়,

li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
s = ";".join(li)
print(s)

পাইথন আউটপুট হিসাবে এটি ফেরত:

'server=mpilgrim;uid=sa;database=master;pwd=secret'

0
list = ["my", "name", "is", "kourosh"]   
" ".join(list)

যদি এটি কোনও ইনপুট হয়, JOIN পদ্ধতিটি ব্যবহার করে আমরা শব্দের মধ্যে দূরত্ব যুক্ত করতে পারি এবং তালিকাটিকে স্ট্রিংয়ে রূপান্তর করতে পারি।

এটি পাইথন আউটপুট

'my name is kourosh'

0

"" .জয়েন একটি ভেরিয়েবলের তালিকায় স্ট্রিংটি অনুলিপি করতে ব্যবহৃত হতে পারে

>>> myList = list("Hello World")
>>> myString = "".join(myList)
>>> print(myList)
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
>>> print(myString)
Hello World
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.