উত্তর:
হুম। এখানে একটি তালিকা বোঝার সাথে একটি উত্তর ছিল, কিন্তু এটি অদৃশ্য হয়ে গেছে।
এখানে:
[i for i,x in enumerate(testlist) if x == 1]
উদাহরণ:
>>> testlist
[1, 2, 3, 5, 3, 1, 2, 1, 6]
>>> [i for i,x in enumerate(testlist) if x == 1]
[0, 5, 7]
হালনাগাদ:
ঠিক আছে, আপনি একটি জেনারেটর এক্সপ্রেশন চান, আমাদের একটি জেনারেটর এক্সপ্রেশন থাকবে। লুপের জন্য এখানে আবার তালিকা বোধগম্যতা রয়েছে:
>>> for i in [i for i,x in enumerate(testlist) if x == 1]:
... print i
...
0
5
7
এখন আমরা একটি জেনারেটর নির্মাণ করব ...
>>> (i for i,x in enumerate(testlist) if x == 1)
<generator object at 0x6b508>
>>> for i in (i for i,x in enumerate(testlist) if x == 1):
... print i
...
0
5
7
এবং তাত্পর্যপূর্ণভাবে, আমরা এটি একটি ভেরিয়েবলের জন্য বরাদ্দ করতে পারি, এবং সেখান থেকে এটি ব্যবহার করতে পারি ...
>>> gen = (i for i,x in enumerate(testlist) if x == 1)
>>> for i in gen: print i
...
0
5
7
এবং ভাবতে আমি ফোরট্রান লিখতাম।
args = ['x', '-p1', 'v1', '-p2', 'v2']
। তারপরে কমান্ডটি args[[i for i, x in enumerate(args) if x == '-p1'][0] + 1]
ফিরে আসে'v1'
নিম্নলিখিত সম্পর্কে কি?
print testlist.index(element)
উপাদানটি তালিকার তালিকায় আসলে রয়েছে কিনা তা আপনি যদি নিশ্চিত না হন তবে আপনি প্রাথমিক চেক যোগ করতে পারেন, পছন্দ করুন
if element in testlist:
print testlist.index(element)
অথবা
print(testlist.index(element) if element in testlist else None)
বা "পাইথোনিক ওয়ে", যা আমি এতটা পছন্দ করি না কারণ কোড কম স্পষ্ট হয় তবে কখনও কখনও আরও দক্ষ হয়,
try:
print testlist.index(element)
except ValueError:
pass
ValueError
for i in xrange(len(testlist)):
if testlist[i] == 1:
print i
অনুরোধ হিসাবে পরিসীমা পরিবর্তে xrange (মন্তব্য দেখুন)।
xrange
পাইথন ৩.x এ সরানো হয়েছে, নতুনটি range
পুরানো হিসাবেxrange
এটি করার আরেকটি উপায় এখানে:
try:
id = testlist.index('1')
print testlist[id]
except ValueError:
print "Not Found"
[x for x in range(len(testlist)) if testlist[x]==1]
নীচে চেষ্টা করুন:
testlist = [1,2,3,5,3,1,2,1,6]
position=0
for i in testlist:
if i == 1:
print(position)
position=position+1
যদি আপনার তালিকার বৃহৎ যথেষ্ট পেয়েছিলাম এবং আপনি শুধুমাত্র সূচকের একটি বিক্ষিপ্ত সংখ্যা মান এটি প্রত্যাশিত, যে বিবেচনা এই কোড পারে অনেক দ্রুত চালানো কারণ আপনার পুনরুক্তি করতে তালিকায় যে মান হবে না।
lookingFor = 1
i = 0
index = 0
try:
while i < len(testlist):
index = testlist.index(lookingFor,i)
i = index + 1
print index
except ValueError: #testlist.index() cannot find lookingFor
pass
আপনি যদি মানটি অনেক খুঁজে পেতে চান তবে আপনার কেবলমাত্র একটি তালিকার জন্য "সূচক" যুক্ত করা উচিত এবং প্রতি পুনরাবৃত্তির সময় সাশ্রয়ের জন্য তালিকাটি শেষে প্রিন্ট করা উচিত।
আমি মনে করি যে থেঙ্কটার লাইব্রেরি থেকে অভিশাপ () পদ্ধতিটি ব্যবহার করা কার্যকর হতে পারে:
from Tkinter import *
listbox.curselection()
এই পদ্ধতিটি টিন্টার লিস্টবক্স উইজেটগুলিতে কাজ করে, সুতরাং আপনাকে তালিকার পরিবর্তে সেগুলির একটি তৈরি করতে হবে।
এটি এর মতো অবস্থান ফিরিয়ে দেবে:
('0',) (যদিও টিনেটারের পরবর্তী সংস্করণগুলি পরিবর্তে ইনটগুলির একটি তালিকা ফিরে আসতে পারে)
যা প্রথম পজিশনের জন্য এবং আইটেমের অবস্থান অনুযায়ী নম্বরটি পরিবর্তন হবে।
আরও তথ্যের জন্য, এই পৃষ্ঠাটি দেখুন: http://effbot.org/tkinterbook/listbox.htm
গ্রিটিংস।
কেবলমাত্র input_list
যা searies1
(উদাহরণস্বরূপ: ইনপুট_লিস্ট [0]) এর সাথে আপনি series2
উদাহরণ (উদাহরণ: ইনপুট_লিস্ট [1]) দেখতে চান এবং সেই সাথে সিরিজ 1 তে উপস্থিত থাকলে সিরিজ 2 এর সূচিপত্রগুলি সহ সম্পূর্ণ উদাহরণটি চিত্রিত করতে পারেন।
দ্রষ্টব্য: certain condition
শর্তগুলি সহজ হলে আপনার ল্যাম্বডা অভিব্যক্তিতে যাবে
input_list = [[1,2,3,4,5,6,7],[1,3,7]]
series1 = input_list[0]
series2 = input_list[1]
idx_list = list(map(lambda item: series1.index(item) if item in series1 else None, series2))
print(idx_list)
আউটপুট:
[0, 2, 6]