আমি একটি স্ট্রিংকে অক্ষরের অ্যারে হিসাবে বিভক্ত করার উত্তরের জন্য ওয়েবে ঘুরে দেখার চেষ্টা করেছি তবে আমি একটি সহজ পদ্ধতি খুঁজে পাচ্ছি না
str.split(//)
রুবির মতো কাজ করে না বলে মনে হয়। লুপ ছাড়াই এটি করার কোনও সহজ উপায় আছে?
আমি একটি স্ট্রিংকে অক্ষরের অ্যারে হিসাবে বিভক্ত করার উত্তরের জন্য ওয়েবে ঘুরে দেখার চেষ্টা করেছি তবে আমি একটি সহজ পদ্ধতি খুঁজে পাচ্ছি না
str.split(//)
রুবির মতো কাজ করে না বলে মনে হয়। লুপ ছাড়াই এটি করার কোনও সহজ উপায় আছে?
উত্তর:
>>> s = "foobar"
>>> list(s)
['f', 'o', 'o', 'b', 'a', 'r']
আপনার তালিকা দরকার
cast_method = lambda x: [x]
আপনি স্ট্রিংটি নিয়ে তা তালিকায় পাস করুন ()
s = "mystring"
l = list(s)
print l
আপনি তালিকা () ছাড়াই খুব সাধারণ উপায়ে এটি করতে পারেন:
>>> [c for c in "foobar"]
['f', 'o', 'o', 'b', 'a', 'r']
for
, ব্যাখ্যা করার মতো অনেক কিছুই নেই। আমি মনে করি আপনার ডেটা স্ট্রাকচারের অজগর টিউটোরিয়ালটি পড়া উচিত , বিশেষত বোধগম্যতার তালিকা।
list(map(lambda c: c, iter("foobar")))
, তবে আরও পঠনযোগ্য এবং অর্থবহ।
আপনি যদি একবারে আপনার স্ট্রিংয়ের একটি অক্ষর প্রক্রিয়া করতে চান তবে। আপনার কাছে বিভিন্ন বিকল্প রয়েছে।
uhello = u'Hello\u0020World'
তালিকা বোঝার ব্যবহার:
print([x for x in uhello])
আউটপুট:
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
মানচিত্র ব্যবহার:
print(list(map(lambda c2: c2, uhello)))
আউটপুট:
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
কল ফর্ম ইন বিল্ট কল:
print(list(uhello))
আউটপুট:
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
লুপের জন্য ব্যবহার:
for c in uhello:
print(c)
আউটপুট:
H
e
l
l
o
W
o
r
l
d
আমি এই কাজটি সম্পাদন করার জন্য আরও দুটি উপায় অন্বেষণ করেছি। এটি কারও পক্ষে সহায়ক হতে পারে।
প্রথমটি সহজ:
In [25]: a = []
In [26]: s = 'foobar'
In [27]: a += s
In [28]: a
Out[28]: ['f', 'o', 'o', 'b', 'a', 'r']
এবং দ্বিতীয়টি ব্যবহার map
এবং lambda
ফাংশন। এটি আরও জটিল কাজের জন্য উপযুক্ত হতে পারে:
In [36]: s = 'foobar12'
In [37]: a = map(lambda c: c, s)
In [38]: a
Out[38]: ['f', 'o', 'o', 'b', 'a', 'r', '1', '2']
উদাহরণ স্বরূপ
# isdigit, isspace or another facilities such as regexp may be used
In [40]: a = map(lambda c: c if c.isalpha() else '', s)
In [41]: a
Out[41]: ['f', 'o', 'o', 'b', 'a', 'r', '', '']
আরও পদ্ধতির জন্য পাইথন ডক্স দেখুন
টাস্কটি স্ট্রিংয়ের অক্ষরগুলির পুনরাবৃত্তি করতে এবং সেগুলিকে একটি তালিকায় সংগ্রহ করার জন্য ফোটায়। সর্বাধিক নির্বোধ সমাধান দেখতে হবে
result = []
for character in string:
result.append(character)
অবশ্যই, এটি সংক্ষিপ্ত করা যেতে পারে
result = [character for character in string]
তবে এখনও ছোট কাজগুলি রয়েছে যা একই কাজ করে।
list
কনস্ট্রাক্টর যেকোন পুনরাবৃত্ত ( রূপান্তরকারী , তালিকা, টিপলস, স্ট্রিং ইত্যাদি) কে তালিকায় রূপান্তর করতে ব্যবহার করা যেতে পারে ।
>>> list('abc')
['a', 'b', 'c']
বড় প্লাসটি হ'ল এটি পাইথন 2 এবং পাইথন 3 উভয় ক্ষেত্রে একই কাজ করে।
এছাড়াও, পাইথন 3.5 থেকে শুরু করে (দুর্দান্ত পিইপি 448 এর জন্য ধন্যবাদ ) খালি তালিকার খালি তালিকায় আনপ্যাক করে যেকোন পুনরাবৃত্ত থেকে একটি তালিকা তৈরি করা এখন সম্ভব:
>>> [*'abc']
['a', 'b', 'c']
এটি আরও সুন্দর, এবং কিছু ক্ষেত্রে list
সরাসরি কনস্ট্রাক্টরকে কল করার চেয়ে আরও দক্ষ ।
আমি map
বেসড পদ্ধতির ব্যবহারের বিরুদ্ধে পরামর্শ দেব , কারণ পাইথন ৩-এ কোনও তালিকা ফিরে map
আসে না See দেখুন কীভাবে ফিল্টার, মানচিত্র ব্যবহার করতে হয় এবং পাইথন 3-তে কীভাবে হ্রাস করতে হয় ।
আমার আপনার কেবল অক্ষরের একটি অ্যারে দরকার:
arr = list(str)
আপনি যদি একটি নির্দিষ্ট স্ট্রের দ্বারা স্ট্র্টটি বিভক্ত করতে চান:
# str = "temp//temps" will will be ['temp', 'temps']
arr = str.split("//")
split()
ইনবিল্ট ফাংশন কেবলমাত্র কিছু শর্তের ভিত্তিতে মানকে পৃথক করে তবে একক কথায় এটি শর্তটি পূরণ করতে পারে না। সুতরাং, এর সাহায্যে এটি সমাধান করা যেতে পারে list()
। এটি অভ্যন্তরীণভাবে অ্যারে কল করে এবং এটি অ্যারের ভিত্তিতে মানটি সংরক্ষণ করবে।
ধরা যাক,
a = "bottle"
a.split() // will only return the word but not split the every single char.
a = "bottle"
list(a) // will separate ['b','o','t','t','l','e']
তাদের আনপ্যাক করুন:
word = "Paralelepipedo"
print([*word])
আপনি যদি কেবল স্ট্রিংটিতে অ্যাক্সেস পড়তে চান তবে আপনি সরাসরি অ্যারে স্বরলিপি ব্যবহার করতে পারেন।
Python 2.7.6 (default, Mar 22 2014, 22:59:38)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> t = 'my string'
>>> t[1]
'y'
Regexp ব্যবহার না করে পরীক্ষার জন্য দরকারী হতে পারে। স্ট্রিংয়ে কি একটি শেষ নিউলাইন থাকে?
>>> t[-1] == '\n'
False
>>> t = 'my string\n'
>>> t[-1] == '\n'
True
ঠিক আছে, আমি তালিকার (সংস্করণ) সংস্করণটি যতটা পছন্দ করি, এখানে আরও একটি ভার্বোজ উপায় খুঁজে পেয়েছি (তবে এটি দুর্দান্ত তাই আমি ভেবেছিলাম যে আমি এটিকে লড়াইয়ে যুক্ত করব):
>>> text = "My hovercraft is full of eels"
>>> [text[i] for i in range(len(text))]
['M', 'y', ' ', 'h', 'o', 'v', 'e', 'r', 'c', 'r', 'a', 'f', 't', ' ', 'i', 's', ' ', 'f', 'u', 'l', 'l', ' ', 'o', 'f', ' ', 'e', 'e', 'l', 's']
camelcase = ''.join([text[i].upper() if i % 2 else text[i].lower() for i in range(len(text))])
>>> for i in range(len(a)):
... print a[i]
...
এমন একটি স্ট্রিং যা আপনি আলাদা করতে চান। "A [i]" মানগুলি স্ট্রিংয়ের স্বতন্ত্র চরিত্র যা এগুলিকে একটি তালিকায় যুক্ত করা যেতে পারে।
for c in a: print c
অনেক বেশি সরাসরি