কীভাবে "সঠিকভাবে" একটি তালিকা মুদ্রণ করবেন?


95

সুতরাং আমার একটি তালিকা আছে:

['x', 3, 'b']

এবং আমি আউটপুটটি হতে চাই:

[x, 3, b]

অজগরে আমি কীভাবে এটি করতে পারি?

আমি যদি করি তবে আমি str(['x', 3, 'b'])একটি উদ্ধৃতি পেয়েছি, তবে আমি উদ্ধৃতি চাই না।


তালিকাটি কেন "যথাযথভাবে" মুদ্রিত নয়, print(["Sam"])কলগুলি কল করে repr("Sam"), যা কল করে 'Sam'(উদ্ধৃতি সহ) ফিরে আসে , যখন আপনি কল করেন print("Sam")এবং পাইথন কলগুলি কল str("Sam")দেয় Sam( কোটগুলি ছাড়াই) unlike দেখুন মধ্যে পার্থক্য strএবংrepr বা পাইথন strএবং listগুলি আরও তথ্যের জন্য।
বেনামে

উত্তর:


190

পাইথন 2 এ:

mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))

পাইথন 3 এ (যেখানে printকোনও বিল্টিন ফাংশন রয়েছে এবং সিনট্যাক্স বৈশিষ্ট্যটি আর নয়):

mylist = ['x', 3, 'b']
print('[%s]' % ', '.join(map(str, mylist)))

উভয়ই ফিরে:

[x, 3, b]

এটি আমার তালিকার map()প্রতিটি উপাদানটির জন্য স্ট্রিং কল করতে ফাংশনটি ব্যবহার করছে , তারপরে একটি স্ট্রিংয়ের সাথে যুক্ত হওয়া স্ট্রিংগুলির একটি নতুন তালিকা তৈরি করবে str.join()। তারপর, %স্ট্রিং অপারেটর বিন্যাস মধ্যে পরিবর্তে স্ট্রিং কর্মের পরিবর্তে %sমধ্যে "[%s]"


4
ধন্যবাদ যে দুর্দান্ত কাজ করে। আপনি দ্বিতীয় লাইনে কী করছেন সে সম্পর্কে আপনি কিছুটা বিশদ বর্ণনা করতে পারেন? আমি পাইথনে নতুন new
ওবায়দ

19
তিনি প্রতিটি উপাদানটির জন্য mapফোন করতে ফাংশনটি ব্যবহার করছেন, তারের সাথে একটি নতুন স্ট্রিংয়ের সাথে যুক্ত হয়ে তার একটি নতুন তালিকা তৈরি করছেন । তারপর, তিনি ব্যবহার স্ট্রিং অপারেটর বিন্যাস মধ্যে পরিবর্তে স্ট্রিং খেলোয়াড়রা মধ্যে । strmyliststr.join%%s"[%s]"
li.davidm

6
এটি করার আরেকটি উপায় যা সম্ভবত কিছুটা আধুনিক হয়েছে: "[{0}]".format(", ".join(str(i) for i in mylist))
জ্যাক ও'কনোর

4
যখন আমি পূর্বনির্ধারিত কলযোগ্য তখন আমি তার চেয়ে বেশি map(f, xs)(বা imapপাইথন 2.x এ) পছন্দ করি ; যা কম বাইটোকোড চালায় এবং সাধারণত আরও কমপ্যাক্ট থাকে। অবশ্যই Dont না না চেয়ে অনেক খারাপ(f(x) for x in xs)f map(lambda x:..., xs)(... for x in xs)
SingleNegationElimination

4
@ ইউজার 1767754: সত্যি? লিঙ্ক?
সিঙ্গেলাইজেশন ইলিমিনেশন

19

এটি সাধারণ কোড, সুতরাং আপনি যদি নতুন হন তবে আপনার এটি সহজেই বোঝা উচিত।

    mylist = ["x", 3, "b"]
    for items in mylist:
        print(items)

এটি যেমনটি চেয়েছিল তেমন সমস্তগুলি মুদ্রণ ছাড়াই মুদ্রণ করে।


15

কেবল মুদ্রণ ব্যবহার করুন:

>>> l = ['x', 3, 'b']
>>> print(*l, sep='\n')
x
3
b
>>> print(*l, sep=', ')
x, 3, b

14

যদি আপনি পাইথন 3 ব্যবহার করেন:

print('[',end='');print(*L, sep=', ', end='');print(']')

4
মুদ্রণ (* এল) এখানে কি করে?
সন্দীপ


4
আমি এতে বিভ্রান্ত হয়ে পড়েছি। দীর্ঘ ডাটা টাইপটি কোনওভাবে তালিকাটি ফিল্টার করছে?
dval

আরও সংক্ষিপ্ত সংস্করণটি হবেprint(end='['); print(*l, sep=', ', end=']\n')
বেনামে

9

ব্যবহারের পরিবর্তে map, আমি একজন জেনারেটর এক্সপ্রেশনটি joinএকটি পুনরাবৃত্তিকে গ্রহণ করার ক্ষমতা সহ ব্যবহার করার পরামর্শ দেব :

def get_nice_string(list_or_iterator):
    return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"

এখানে joinস্ট্রিং ক্লাসের সদস্য ফাংশন রয়েছে str। এটিতে একটি যুক্তি লাগে: স্ট্রিংগুলির একটি তালিকা (বা পুনরুক্তি), তারপরে এই ক্ষেত্রে, দ্বারা সংযুক্ত সমস্ত উপাদানগুলির সাথে একটি নতুন স্ট্রিং প্রদান করে ,


4
পাইথন 2 এর জন্য একটি ভাল অপ্টিমাইজেশন, যেহেতু মানচিত্রটি ২.x-এ একটি তালিকা ফেরত দেয়। এটি 3.x এ একটি জেনারেটর ফেরত দেয়, তাই এটি সেখানে তেমন সহায়তা করে না।
টম জাইচ

7
আমি ফিরে আসব", ".join( str(x) for x in list_or_iterator).join('[]')
একিউএম

@ এয়াকিম: চতুর, আমি এর আগে এর আগে ব্যবহৃত হতে দেখিনি। তবুও, এটি একটি শিক্ষানবিশকে একটু বেশি অস্বচ্ছ (যেহেতু আপনি সম্পত্তিটি ব্যবহার করছেন যে স্ট্রিংটি এক-চরিত্রের স্ট্রিংগুলির একটি পুনরাবৃত্তিযোগ্য ধারক)।
শেঠ জনসন

6

আপনি একটি স্ট্রিং তার ব্যবহার থেকে সব অবাঞ্ছিত অক্ষর মুছে দিতে পারেন translate()পদ্ধতি সঙ্গে Noneজন্য tableযুক্তি স্ট্রিং অক্ষর (গুলি) ধারণকারী আপনি তার জন্য সরানো হোক দ্বারা অনুসরণ deletecharsযুক্তি।

lst = ['x', 3, 'b']

print str(lst).translate(None, "'")

# [x, 3, b]

আপনি যদি ২.6 এর আগে পাইথনের একটি সংস্করণ ব্যবহার করে থাকেন তবে stringএর translate()পরিবর্তে আপনাকে মডিউলটির ফাংশনটি ব্যবহার করতে হবে কারণ অজু যুক্ত Noneহিসাবে পাস করার ক্ষমতা tableপাইথন ২.6 না হওয়া পর্যন্ত যুক্ত করা হয়নি। এটি ব্যবহার করে এমনটি দেখায়:

import string

print string.translate(str(lst), None, "'")

string.translate()ফাংশনটি ব্যবহার করা ২.6++ এও কাজ করবে, সুতরাং এটি ব্যবহার করা পছন্দনীয়।


4
হায়রে: lst = ["it isn't", 3, 'b']==> ["it isnt", 3, b]এবং এর সাথেlst = ['it isn\'t', 3, 'b']
আইকেম

4
@ এেকেম: হ্যাঁ, এমন অক্ষরগুলি মুছে ফেলা এড়ানো যা প্রকৃতপক্ষে আপনার ডেটার অংশ (এটি কঠোরভাবে সীমাবদ্ধ করার পরিবর্তে ব্যবহার করা উচিত) এর যদি কোনও সম্ভাবনা থাকে তবে স্বাভাবিকভাবেই কিছুটা আরও বিস্তৃত / ভিন্ন যুক্তি প্রয়োজন।
মার্টিনিউ

3

এখানে @ টোকেনম্যাকগুয়ের ওয়ান-লাইনারের কয়েকটি ধাপ দেখানো একটি ইন্টারেক্টিভ সেশন রয়েছে। প্রথমে তিনি mapতালিকার প্রতিটি আইটেমকে স্ট্রিংয়ে রূপান্তর করতে ফাংশনটি ব্যবহার করেন (আসলে, তিনি একটি নতুন তালিকা তৈরি করছেন, পুরানো তালিকার আইটেমগুলিকে রূপান্তর না করে)। তারপরে তিনি স্ট্রিং পদ্ধতিটি ব্যবহার করছেন তার মধ্যে joinএই স্ট্রিংগুলির সাথে একত্রিত ', 'করার জন্য। বাকিটি কেবল স্ট্রিং ফর্ম্যাটিং, যা বেশ সোজা। (সম্পাদনা করুন: এই উদাহরণটি সোজা; সাধারণভাবে স্ট্রিং ফর্ম্যাটিং কিছুটা জটিল হতে পারে))

নোট করুন যে ব্যবহার joinকরা বেশ কয়েকটি সাবস্ট্রিং থেকে স্ট্রিং তৈরির সহজ এবং কার্যকরী উপায়, ক্রমাগত স্ট্রিংগুলিতে স্ট্রিং যুক্ত করার মাধ্যমে এটি করার চেয়ে অনেক বেশি দক্ষ, যা পর্দার আড়ালে অনেক অনুলিপি জড়িত।

>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'

2

.formatস্ট্রিং ফর্ম্যাটিংয়ের জন্য ব্যবহার করে ,

mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))

আউটপুট:

[x, 3, b]

ব্যাখ্যা:

  1. mapstringটাইপ করতে তালিকার প্রতিটি উপাদান ম্যাপ করতে ব্যবহৃত হয় ।
  2. উপাদানগুলি পৃথক ,হিসাবে স্ট্রিংয়ের সাথে একত্রে যুক্ত হয় ।
  3. আমরা ব্যবহার [এবং ]প্রিন্ট বিবৃতিতে তালিকা ধনুর্বন্ধনী দেখানোর জন্য।

রেফারেন্স: .formatPEP-3101 স্ট্রিং বিন্যাসের জন্য


দুর্দান্ত! আমি .formatসর্বাধিক পাইথোনিক উপায় ব্যবহার করে দেখতে পাই । তবে অবশ্যই আমি দ্বিমত পোষণ করি। ;)
প্রিয়.বি

0

আমি @ অ্যানিমেন দ্বারা অনুপ্রাণিত হয়ে পাইথোনিক আরও সাধারণ সমাধান লেখার জন্য।

mylist = ['x', 3, 'b']
print('[{}]'.format(', '.join(map('{}'.format, mylist))))

এটি কেবল formatপদ্ধতিটিই ব্যবহার করে । এর কোনও চিহ্ন নেই strএবং এটি উপাদানগুলির ফর্ম্যাটটির সূক্ষ্ম সুর করার অনুমতি দেয়। উদাহরণস্বরূপ, তালিকার উপাদান হিসাবে যদি আপনার কাছে ভাসমান সংখ্যা থাকে তবে আপনি এই ক্ষেত্রে কোনও রূপান্তর নির্দিষ্টকারী যুক্ত করে তাদের বিন্যাসটি সামঞ্জস্য করতে পারেন:.2f

mylist = [1.8493849, -6.329323, 4000.21222111]
print("[{}]".format(', '.join(map('{:.2f}'.format, mylist))))

আউটপুট বেশ শালীন:

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