পাইথনে সূচীগুলির সাথে একটি তালিকা আইট্রেট করুন


203

আমি শপথ করতে পারি যে আমি ফাংশনটি (বা পদ্ধতি) দেখেছি যা এই জাতীয় একটি তালিকা নেয় [3, 7, 19]এবং এটি এটিকে পুনরায় পুনরায় তালিকার তালিকাতে পরিণত করে: এর [(0,3), (1,7), (2,19)]পরিবর্তে এটি ব্যবহার করতে:

for i in range(len(name_of_list)):
    name_of_list[i] = something

তবে আমি নামটি মনে করতে পারি না এবং গুগলিং "পুনরাবৃত্তি তালিকা" কিছুই পায় না।

উত্তর:



107

হ্যাঁ, যে enumerateফাংশন হবে! বা আরও বেশি বিষয়, আপনার এটি করতে হবে:

list(enumerate([3,7,19]))

[(0, 3), (1, 7), (2, 19)]

2
কখনও কখনও লোকেরা সত্যই যা চায় তার সাথে সম্পর্কিত প্রশ্ন জিজ্ঞাসা করে, অন্য সময় তারা "সেরা" অর্থ কী তা সম্পর্কে কিছুটা নির্বিচারে থাকে are
এমএসডব্লিউ

3
এবং কখনও কখনও লোকেরা পুরো প্রশ্নের পরিবর্তে প্রশ্নের প্রথম দেড় লাইন পড়ে read আপনি যদি দ্বিতীয় লাইনের শেষে পৌঁছে যান তবে তিনি বলেছেন যে তিনি এটি ব্যবহার করতে চান তার পরিবর্তে for i in range(len(name_of_list)):আমাকে প্রথম অংশে যা দেখানো হয়েছে তার পরিবর্তে একটি উদাহরণ ব্যবহার করতে বাধ্য করেছে।
ভিঙ্কো ভার্সালভিক

1
@ হ্যামফ্রেবোগার্ট কারণ লরেন ব্যাকাল আরও ভার্জোজ হতে পছন্দ করে।
জাভাদবা 25'15

25

এখানে zipফাংশনটি ব্যবহার করে আরও একটি ।

>>> a = [3, 7, 19]
>>> zip(range(len(a)), a)
[(0, 3), (1, 7), (2, 19)]

10
enumerate()আমি কিছুটা মার্জিত, আমি মনে করি।
নাথান ফেলম্যান

14
@ নাথান: তবে জিপ () আরও সাধারণ এবং এটি যেকোন তালিকার তালিকায় কাজ করে তাই এটি জেনে রাখা ভাল।
শ্রীভাতসার

8

মানচিত্রের কার্যকারিতাটি ব্যবহার করে এটি এখানে একটি সমাধান:

>>> a = [3, 7, 19]
>>> map(lambda x: (x, a[x]), range(len(a)))
[(0, 3), (1, 7), (2, 19)]

এবং তালিকা উপলব্ধি ব্যবহার করে একটি সমাধান:

>>> a = [3,7,19]
>>> [(x, a[x]) for x in range(len(a))]
[(0, 3), (1, 7), (2, 19)]

5

অজগর enumerateফাংশন আপনার প্রয়োজনীয়তা সন্তুষ্ট হবে

result = list(enumerate([1,3,7,12]))
print result

আউটপুট

[(0, 1), (1, 3), (2, 7),(3,12)]

2

আপনার যদি একাধিক তালিকা থাকে তবে আপনি এই সংমিশ্রণটি করতে পারেন enumerateএবং zip:

list1 = [1, 2, 3, 4, 5]
list2 = [10, 20, 30, 40, 50]
list3 = [100, 200, 300, 400, 500]
for i, (l1, l2, l3) in enumerate(zip(list1, list2, list3)):
    print(i, l1, l2, l3)
আউটপুট:
0 1 10 100
1 2 20 200
2 3 30 300
3 4 40 400
4 5 50 500

দ্রষ্টব্য যে পরে প্রথম বন্ধনী প্রয়োজন i। অন্যথায় আপনি ত্রুটি পাবেন:ValueError: need more than 2 values to unpack

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