একটি অ্যারের মধ্যে পাইথন অবজেক্টের একটি বৈশিষ্ট্য মেলে 'মধ্যে' ব্যবহার

আমি মনে করি না যে আমি স্বপ্ন দেখেছি বা না কিন্তু মনে হচ্ছে মনে হচ্ছে এমন একটি ফাংশন হচ্ছে যা কিছুটা মঞ্জুরি দেয়,

foo in iter_attr(array of python objects, attribute name)

আমি ডক্সের দিকে তাকিয়েছি কিন্তু এই ধরণের জিনিসটি কোনো সুস্পষ্ট তালিকাভুক্ত শিরোনামের নিচে পড়ে না

0
যোগ সম্পাদিত
মতামত: 1

10 উত্তর

একটি বৈশিষ্ট্য লেখার পাশাপাশি, আমি ইভেন্ট রিসিভারের সাথে কিভাবে কাজ করে দেখিয়েছি এখানে

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

অনুমতির স্তরের API- র ভূমিকা বলা হয়। আপনি একটি নতুন SPRoleDefinition তৈরি করতে চাইবেন, কনফিগার করুন নাম এবং বেসপর্মগুলি, এবং তারপর এটি SPWeb.RoleDefinitions সংগ্রহের মধ্যে যোগ করুন।

গোষ্ঠীগুলিকে এপিআই-এ গ্রুপ বলা হয়। আপনি একটি গ্রুপ তৈরি করতে SPWeb.Groups.Add কল করতে চান।

আমি এই সব ইন্দ্রিয় তোলে আশা করি।

1
যোগ

আমি কি চিন্তা ছিল তালিকা সংশ্লেষ ব্যবহার করে অর্জন করা সম্ভব, কিন্তু আমি মনে করি যে একটি ফাংশন ছিল যে এটি একটি সামান্য সামঞ্জস্যপূর্ণ ভাবে।

যেমন 'বার' বস্তুর একটি তালিকা, যার সবটির 'আইডি' বৈশিষ্ট্য আছে

পৌরাণিক কার্যকরী উপায়:

foo = 12
foo in iter_attr(bar, 'id')

তালিকা স্বীকৃতি উপায়:

foo = 12
foo in [obj.id for obj in bar]

বিস্ময় প্রকাশ তালিকায় কৌতূহলী উপায় উপায় বেশ নমনীয় হয়।

0
যোগ

না, তুমি স্বপ্ন দেখনি Python একটি চমত্কার চমৎকার তালিকা বোধগম্য সিস্টেম আছে যা আপনি সুদর্শন সুন্দর তালিকা তালিকাভুক্ত করা, এবং ঠিক কি আপনি সম্পন্ন করতে চান উপর নির্ভর করে, এই উপায় কয়েকটি করা যেতে পারে। পরিশেষে, আপনি যা করছেন তা "বলার অপেক্ষা রাখে না যদি তালিকাতে আইটেমের জন্য" বলছে, এবং সেই থেকে আপনি ফলাফলের মাধ্যমে শুধু তাড়াতাড়ি বা ফলাফলগুলি নতুন তালিকাতে ডাম্প করতে পারেন।

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

  ফাইল = os.listdir (পাথ)
    test = recompile ("পরীক্ষা করুন \। $ $", পুনরায়। ইনভেরেন্স)
    ফাইল = ফাইলের জন্য f এর ক্ষেত্রে test.search (f)]
</কোড> 

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

এরিক স্তনবৃন্ত

0
যোগ

আমি মনে করি:

#!/bin/python
bar in dict(Foo)

তুমি কি চিন্তা করছ? Python (একটি হ্যাশ টেবিল এর Python সংস্করণ) একটি অভিধানের মধ্যে একটি নির্দিষ্ট কী উপস্থিত থাকলে তা দেখার চেষ্টা করার সময় চেক করার দুটি উপায় আছে। প্রথমটি হল অভিধানে সংযুক্ত has_key() পদ্ধতি এবং দ্বিতীয়টি উপরে দেওয়া উদাহরণ। এটি একটি বুলিয়ান মান ফিরে আসবে।

যে আপনার প্রশ্নের উত্তর দিতে হবে।

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

বলুন আপনার কাছে একটি দ্বিমাত্রিক অভিধান foo এবং আপনি কেবলমাত্র দ্বিতীয় মাত্রা অভিধানগুলি চাচ্ছেন যা কী বার । এটি করতে একটি তুলনামূলকভাবে সহজবোধ্য উপায় একটি তালিকা বোঝার ব্যবহার করতে হবে যেমন শর্তাধীন:

#!/bin/python
baz = dict([(key, value) for key, value in foo if bar in value])

বিবৃতি শেষে মানে বার নোট করুন, এটি একটি সংশোধিত অনুচ্ছেদ যা তালিকা বোঝার বলে যে কেবল তাদের রাখা আছে কী-মানের জোড়া যা শর্তাধীন পূরণ করে। ** এই ক্ষেত্রে বাজ </কোড> একটি নতুন অভিধান যা কেবলমাত্র foo থেকে অভিধানগুলি রয়েছে যার মধ্যে বার রয়েছে (আশা করছি আমি মিস করব না যে কোড উদাহরণের মধ্যে কিছু ... আপনি docs.python.org টিউটোরিয়ালগুলি এবং secnetix.de , ভবিষ্যতে যদি আপনার কোন প্রশ্ন থাকে তবে উভয় সাইটই ভাল রেফারেন্স।)।

0
যোগ

আপনি দূরবর্তীভাবে শালীন আকারের কিছু অনুসন্ধান করার পরিকল্পনা করলে, আপনার সেরা বাজি একটি অভিধান বা একটি সেট ব্যবহার করা যাচ্ছে। অন্যথায়, আপনি মূলত আপনি iterator প্রতিটি উপাদান মাধ্যমে পুনরাবৃত্তি আছে পর্যন্ত আপনি চান এক পেতে।

যদি এটি অগত্যা কর্মক্ষমতা সংবেদনশীল কোড না হয়, তাহলে তালিকা বোঝার উপায় কাজ করা উচিত। কিন্তু মনে রাখবেন যে এটি মোটামুটি অদক্ষ, কারণ এটি iterator এর প্রতিটি উপাদান উপর যায় এবং তারপর আবার এটি ফিরে পর্যন্ত এটি পর্যন্ত কি এটি চায় না পায়।

মনে রাখবেন, Python কাছাকাছি সবচেয়ে দক্ষ হ্যাশিং এলগরিদম এক আছে। আপনার সুবিধা এটি ব্যবহার করুন।

0
যোগ

আপনি যে ফাংশনটি ভাবছেন তা হল সম্ভবত operator.attrgettter । উদাহরণস্বরূপ, প্রতিটি বস্তুর "আইডি" বৈশিষ্ট্যের মান রয়েছে এমন একটি তালিকা পেতে:

import operator
ids = map(operator.attrgetter("id"), bar)

যদি আপনি তালিকাটি একটি আইডি == 12 দিয়ে বস্তু কিনা তা পরীক্ষা করতে চান তবে একটি পরিচ্ছন্ন ও দক্ষ (যেমন, সম্পূর্ণ তালিকাটি অকারণে পুনর্বিবেচনা করে না) এটি করার উপায় হল:

any(obj.id == 12 for obj in bar)

যদি আপনি attrgetter সঙ্গে 'মধ্যে' ব্যবহার করতে চান, এখনও তালিকা অলস পুনরাবৃত্তির বজায় রাখার সময়:

import operator,itertools
foo = 12
foo in itertools.imap(operator.attrgetter("id"), bar)
0
যোগ

একটি তালিকা বোঝার ব্যবহার করে একটি অস্থায়ী তালিকা তৈরি হবে, যা অনুসন্ধান করা ক্রমটি বড় হলে আপনার সমস্ত মেমরি খেতে পারে। এমনকি যদি ক্রমটি বড় না হয়, তাহলে তালিকাটি তৈরি করার মানে হল যে, এর অনুসন্ধানটি শুরু করতে পারে আগে পুরো অনুক্রমটি পুনরাবৃত্ত করা।

একটি জেনারেটর এক্সপ্রেশন ব্যবহার করে অস্থায়ী তালিকাটি এড়ানো যাবে:

foo = 12
foo in (obj.id for obj in bar)

এখন obj.id == 12 বার এর শুরুর দিকে, অনুসন্ধানটি দ্রুত হবে, এমনকি যদি বার অসীমভাবে দীর্ঘ হয় ।

হিসাবে @ Matt প্রস্তাবিত, এটি বার একটি id অ্যাট্রিবিউটটি অনুপস্থিত থাকলে হ্যাটট্রার ব্যবহার করার জন্য এটি একটি ভাল ধারণা।

foo = 12
foo in (obj.id for obj in bar if hasattr(obj, 'id'))
0
যোগ

আপনি একটি নির্দিষ্ট অ্যাট্রিবিউট আছে এমন বস্তুর একটি তালিকা পেতে খুঁজছেন? যদি তাই হয়, একটি তালিকাটি বোঝার এটি করার সঠিক উপায়।

result = [obj for obj in listOfObjs if hasattr(obj, 'attributeName')]
0
যোগ

আপনি সবসময় নিজেকে এক লিখতে পারে:

def iterattr(iterator, attributename):
    for obj in iterator:
        yield getattr(obj, attributename)

যে কোনো কিছু সঙ্গে কাজ করবে, এটি একটি tuple হতে, তালিকা, বা যাই হোক না কেন।

আমি পাইথনকে ভালোবাসি, এটা এই ধরনের জিনিসগুলিকে সহজ করে তোলে এবং আর কোনও ঝামেলা ছাড়াই ঝগড়াঝাঁটি করে তুলতে পারে এবং এটির মতো ব্যবহারযোগ্য সামগ্রীগুলি অত্যন্ত মার্জিত।

0
যোগ