পাইথোনিক উপায় তালিকা আইটেম মুদ্রণ


114

পাইথন তালিকায় সমস্ত বস্তু মুদ্রণের আরও ভাল উপায় আছে কিনা তা আমি জানতে চাই:

myList = [Person("Foo"), Person("Bar")]
print("\n".join(map(str, myList)))
Foo
Bar

আমি এইভাবে পড়েছি আসলেই ভাল নয়:

myList = [Person("Foo"), Person("Bar")]
for p in myList:
    print(p)

এখানে কি কিছু নেই:

print(p) for p in myList

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


3
for p in myList"সত্যিই ভাল ছিল না" এমন ধারণাটি আপনি কোথায় পেয়েছেন ?
জন ক্লিমেটস


@pelotasplus: সমস্ত :) এবং পথ আমি সত্যিই না আমার প্রথম সংস্করণ মত যেটি "পাঠযোগ্য" নয় দ্বারা নয়
Guillaume, Voiron,

উত্তর:


220

ধরে নিই যে আপনি পাইথন ৩.x ব্যবহার করছেন:

print(*myList, sep='\n')

from __future__ import print_functionমন্তব্যগুলিতে মিলিলসন দ্বারা উল্লিখিত হিসাবে আপনি পাইথন ২.x ব্যবহার করে একই আচরণ পেতে পারেন ।

পাইথন ২.x এর মুদ্রণ বিবরণীর সাথে আপনার কোনও ধরণের পুনরাবৃত্তি প্রয়োজন হবে, print(p) for p in myListকাজ না করার বিষয়ে আপনার প্রশ্ন সম্পর্কিত , আপনি কেবল নিম্নলিখিতটি ব্যবহার করতে পারেন যা একই জিনিসটি করে এবং এটি এখনও একটি লাইন:

for p in myList: print p

যে সমাধানটি ব্যবহার করে '\n'.join(), তার জন্য আমি তালিকাগুলি এবং জেনারেটরগুলির চেয়ে বেশি পছন্দ map()করি তাই আমি সম্ভবত নিম্নলিখিতটি ব্যবহার করব:

print '\n'.join(str(p) for p in myList) 

3
এবং যদি তা না হয় তবে আপনি from __future__ import print_functionপাইথন ২. and এবং আরও নতুন করতে পারেন ।
মিগিলসন

পাইথন 2x-তে মানচিত্র ব্যবহার করা কোনও তালিকা বোধগম্যে যোগদানের চেয়ে কিছুটা দ্রুত।
জুয়ান কার্লোস মোরেনো

1
ডাউনভোট কেন, এটি সত্যই map()কোনও জেনারেটরের মধ্যে গতির পার্থক্যের কারণে ঘটেছে ? পাইথনের স্রষ্টাও বোধগম্যতা এবং জেনারেটরগুলির চেয়ে বেশি পছন্দ করেনmap()
অ্যান্ড্রু ক্লার্ক

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

1
তারা পাইথন ৩.x এ অবস্থান করেছিল, তবে এই নিবন্ধে তার বক্তব্যটি এর [F(x) for x in S]চেয়ে বেশি স্পষ্ট map(F, S)। পারফরম্যান্স সেখানে সম্বোধন করা হয় না, তবে আমি গতির পার্থক্য নগণ্য হবে আশা করি। যাই হোক আমি ডাউনটা সম্পর্কে শুধু বিভ্রান্ত ছিলাম, দুঃখিত আমি ধরে নিয়েছিলাম এটি আপনিই!
অ্যান্ড্রু ক্লার্ক

28

আমি এটি সর্বদা ব্যবহার করি:

#!/usr/bin/python

l = [1,2,3,7] 
print "".join([str(x) for x in l])

1
যুক্ত করতে format(), str(x)ফর্ম্যাট স্ট্রিংয়ের সাথে প্রতিস্থাপন করুন :print " ".join(["{:02d}".format(x) for x in l])
ক্রিসফ্রিম্যান

8

[print(a) for a in list] এটি সমস্ত আইটেম প্রিন্ট করেও শেষে এক ধরণের কিছুই নয়


এটি আমি এখনও পর্যন্ত ব্যবহার করে যাচ্ছি। এটি একটি লাইন, খুব স্পষ্ট এবং এক্সপ্রেসিভ, তবে লটার অভিযোগ "এক্সপ্রেশন কিছুতেই বরাদ্দ করা হয় না"
19:54

1
আপনি যদি লিন্টারটি ট্রল করতে চান তবে আপনি একটি পৃথক ফাংশন তৈরি করতে পারেন যা এটি মুদ্রণ করে এবং কিছু বোকা মান ফেরত দেয় এবং সেই ফাংশনটিকে
তালিকান

3

পাইথন ২ এর জন্য। *:

যদি আপনি আপনার ব্যক্তি শ্রেণীর জন্য __str __ () ফাংশনটি ওভারলোড করেন তবে আপনি মানচিত্র (স্ট্র ...,) দিয়ে অংশটি বাদ দিতে পারেন। এর জন্য অন্য উপায়টি একটি ফাংশন তৈরি করা যেমন আপনি লিখেছেন:

def write_list(lst):
    for item in lst:
        print str(item) 

...

write_list(MyList)

পাইথন 3 এ রয়েছে * * মুদ্রণ () ফাংশনের জন্য আর্গুমেন্ট সেপ । ডকুমেন্টেশন একবার দেখুন।


3

@ লুকাশের উত্তরটি প্রসারিত করা (এটি প্রাপ্ত মন্তব্যে অনুপ্রাণিত):

বিন্যাসিত তালিকার আউটপুট পেতে , আপনি এই লাইনগুলি বরাবর কিছু করতে পারেন:

l = [1,2,5]
print ", ".join('%02d'%x for x in l)

01, 02, 05

এখন ", "বিভাজক সরবরাহ করে (কেবলমাত্র আইটেমগুলির মধ্যে নয়, শেষের দিকে নয়) এবং '02d'একত্রিত %xফর্ম্যাটিং স্ট্রিং প্রতিটি আইটেমের জন্য একটি বিন্যাসিত স্ট্রিং দেয় - এক্ষেত্রে xদুটি অঙ্ক সহ একটি পূর্ণসংখ্যা হিসাবে ফর্ম্যাট করা হয়, জিরো দিয়ে পূর্ণ-


2

প্রতিটি বিষয়বস্তু প্রদর্শন করতে, আমি ব্যবহার করি:

mylist = ['foo', 'bar']
indexval = 0
for i in range(len(mylist)):     
    print(mylist[indexval])
    indexval += 1

একটি ফাংশনে ব্যবহারের উদাহরণ:

def showAll(listname, startat):
   indexval = startat
   try:
      for i in range(len(mylist)):
         print(mylist[indexval])
         indexval = indexval + 1
   except IndexError:
      print('That index value you gave is out of range.')

আশা করি আমি সাহায্য করেছি।


1
ঠিক যেমন একটি নোট, দয়া করে আপনার উপরের উত্তরটি পরীক্ষা করুন। আপনি এমন একটি ব্যাপ্তি ব্যবহার করেন যা একটি সূচক মান সরবরাহ করে, i, তবুও আপনি অন্য সূত্র, সূচকগুলি আপনার সূচক হিসাবে ব্যবহার করেন ?? আপনি অজগরটির সরলতার বিরুদ্ধে লড়াই করছেন। মাই_লিস্টে ভালের জন্য: প্রিন্ট ভাল আপনার যা আছে ঠিক তেমন করে
ব্রেটডি

1

আমি মনে করি এটি সর্বাধিক সুবিধাজনক যদি আপনি কেবল তালিকার বিষয়বস্তু দেখতে চান:

myList = ['foo', 'bar']
print('myList is %s' % str(myList))

সরল, পড়তে সহজ এবং বিন্যাসের স্ট্রিংয়ের সাথে একসাথে ব্যবহার করা যেতে পারে।


1

ওপির প্রশ্ন হ'ল: অনুসরণ করার মতো কিছু আছে কি না, তা না হলে কেন

print(p) for p in myList # doesn't work, OP's intuition

উত্তরটি হ'ল এটি বিদ্যমান :

[p for p in myList] #works perfectly

মূলত, []তালিকা বোঝার জন্য ব্যবহার করুন এবং printমুদ্রণ এড়ানো থেকে মুক্তি পান None। দেখার জন্য কেন printকপি করে প্রিন্ট Noneদেখতে এই


1

আমি সম্প্রতি একটি পাসওয়ার্ড জেনারেটর তৈরি করেছি এবং যদিও অজগর থেকে আমি খুব নতুন, তবুও আমি তালিকাতে সমস্ত আইটেম প্রদর্শন করার উপায় হিসাবে এটি বেত্রাঘাত করেছি (আপনার প্রয়োজন অনুসারে ছোট ছোট সম্পাদনা সহ ...

    x = 0
    up = 0
    passwordText = ""
    password = []
    userInput = int(input("Enter how many characters you want your password to be: "))
    print("\n\n\n") # spacing

    while x <= (userInput - 1): #loops as many times as the user inputs above
            password.extend([choice(groups.characters)]) #adds random character from groups file that has all lower/uppercase letters and all numbers
            x = x+1 #adds 1 to x w/o using x ++1 as I get many errors w/ that
            passwordText = passwordText + password[up]
            up = up+1 # same as x increase


    print(passwordText)

আমি যেমন বলেছিলাম, পাইথনের কাছে আমি খুব নতুন এবং আমি নিশ্চিত যে এটি কোনও বিশেষজ্ঞের কাছে আঁকড়ে যাওয়ার উপায়, তবে আমি এখানে অন্য উদাহরণের জন্য মাত্র


0

আপনার তালিকাটি [1,2,3] মুদ্রিত হওয়ার সাথে আপনি ভাল আছেন বলে ধরে নিচ্ছেন, তবে পাইথন 3 এর একটি সহজ উপায় হ'ল:

mylist=[1,2,3,'lorem','ipsum','dolor','sit','amet']

print(f"There are {len(mylist):d} items in this lorem list: {str(mylist):s}")

এটি চালানো নিম্নলিখিত আউটপুট উত্পাদন করে:

এই লোরেম তালিকায় 8 টি আইটেম রয়েছে: [1, 2, 3, 'লোরেম', 'আইপসাম', 'ডলোর', 'সিট', 'এমেট']

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