তালিকায় থাকা একটি টুপলে একটি মান অ্যাক্সেস করা


89
[(1,2), (2,3), (4,5), (3,4), (6,7), (6,7), (3,8)]

এই তালিকার প্রতিটি টিপল থেকে আমি কীভাবে দ্বিতীয় মানটি ফিরিয়ে দেব?

পছন্দসই আউটপুট:

[2, 3, 5, 4, 7, 7, 8]

উত্তর:


101

একটি তালিকা বোধগম্যতা সহ

[x[1] for x in L]

53
আমি বুঝতে পারি এটি একটি সাধারণ প্রশ্ন। এসও কি এমন অভিজাত স্থান? প্রশ্নটি গুগল করার চেষ্টা করুন, ফলাফলগুলি আমার যা প্রয়োজন তা নয়। আমি অজগরটি কঠিনভাবে শিখেছি এবং আমি এটি সেখানে পাই না। পাইথন শেখার সর্বোত্তম পদ্ধতির বিষয়ে আগে আমি প্রশ্ন জিজ্ঞাসা করেছি এবং সর্বসম্মত উত্তরটি হল একটি মৌলিক বই পাওয়া এবং কেবল ডুব দেওয়া এতদিনের জন্য? এছাড়াও আপনার মন্তব্যটি সত্যই সহায়ক নয় এবং নতুন সদস্যদের এসওতে পোস্ট করা থেকে নিরুৎসাহিত করে।
9

4
@ নাই: আমি পাইথন টিউটোরিয়ালটি পড়ার পরামর্শ দিই: ডকস.পাইথন.আর . / টিউটোরিয়াল / ইন্ডেক্স এইচটিএমএল । সাধারণভাবে, ডকুমেন্টেশন খুব ভাল। এবং কখনও কখনও, কেবল একটি চেষ্টা করতে হবে;)
ফেলিক্স ক্লিং

19
একটি তালিকার তালিকায় কোনও আইটেম অ্যাক্সেস করার অভিপ্রায় নিয়ে আমি "টুপলে আইটেম অ্যাক্সেস করা" গুগল করেছি। এটি আমাকে আপনার প্রশ্নে নিয়ে এসেছিল তাই আপনাকে ধন্যবাদ। আমি পাইথনে মোটামুটি নতুন এবং উত্তরটি বিশেষভাবে স্বজ্ঞাত হিসাবে খুঁজে পাই না, তবে এটি কেবল আমার!
প্যাট্রিক উইলিয়ামস

8
আমি ভেবেছিলাম এসও সহ সম্পূর্ণ ধারণাটি ছিল আপনার প্রশ্নের উত্তরগুলি সন্ধান করা আরও সহজ করে তুলতে। বৈধ হওয়ার জন্য কেন একটি প্রশ্ন অবশ্যই একটি নির্দিষ্ট সমস্যার হতে হবে? ভাল প্রশ্ন, ভাল উত্তর।
স্কেলসওয়ে

4
উজ্জ্বল! একটি সংক্ষিপ্ত, তীক্ষ্ণ, বিন্দু প্রশ্নের একটি সংক্ষিপ্ত, তীক্ষ্ণ, পয়েন্ট উত্তরটির। আপনারা দুজনেই আমার দিনটি তৈরি করেছেন!
এরিক এম

82

Ignacio এর উত্তর আপনি কি চান। তবে, যেহেতু কেউ পাইথনও শিখছেন , আমি এটি আপনার জন্য ছড়িয়ে দেওয়ার চেষ্টা করি ... যেমনটি বলা হয়েছে, এটি একটি তালিকা বোঝার ( উদাহরণস্বরূপ ডাইভিয়েন্টো পাইথন 3 এ আচ্ছাদিত ) is এখানে কয়েকটি বিষয় রয়েছে:

[x[1] for x in L]

  • []কোড লাইনের চারপাশে লক্ষ্য করুন । এগুলিই একটি তালিকা সংজ্ঞায়িত করে। এটি আপনাকে বলে যে এই কোডটি একটি তালিকা ফেরত দেয়, সুতরাং এটি listটাইপের। অতএব, এই কৌশলটিকে একটি "তালিকা উপলব্ধি" বলা হয়।
  • এল আপনার মূল তালিকা। সুতরাং L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]উপরোক্ত কোডটি কার্যকর করার আগে আপনাকে অবশ্যই সংজ্ঞা দেওয়া উচিত ।
  • xএটি একটি পরিবর্তনশীল যা কেবলমাত্র উপলব্ধির মধ্যে রয়েছে - বোঝার xবাইরে অ্যাক্সেস করার চেষ্টা করুন , বা type(x)উপরের লাইনটি কার্যকর করার পরে টাইপ করুন এবং এটি আপনাকে জানিয়ে দেবে NameError: name 'x' is not defined, যেখানে type(L)ফিরে আসে <class 'list'>
  • x[1]পয়েন্ট দ্বিতীয় tuples প্রতিটি আইটেমের যেহেতু x[0]প্রথম আইটেম প্রতিটি নির্দেশ করবে।
  • সুতরাং কোডের এই লাইনটি আক্ষরিকভাবে "তালিকার সমস্ত টিপলস তালিকার জন্য একটি আইনে দ্বিতীয় আইটেমটি ফিরিয়ে দিন" পাঠ করে "

প্রশ্ন জিজ্ঞাসা করার আগে আপনি সমস্যাটি কতটা চেষ্টা করেছেন তা বলা শক্ত, তবে সম্ভবত আপনি বুঝতে পারছেন না? আমি DiveIntoPython এর 3 য় অধ্যায় বা বোধগম্যতার কোনও সংস্থান দিয়ে কিছুটা সময় ব্যয় করব । শুভকামনা।


4
২.x এ, xএলসি এর বাইরের সাথে শেষ মানটি আবদ্ধ থাকবে। এটি 3.x এ স্থির করা হয়েছে।
ইগনাসিও ওয়াজকেজ-আব্রামস

আমি এটা বুঝতে পারি নি। তথ্যের জন্য ধন্যবাদ।
গ্যারি

4
অসাধারণ ব্যাখ্যা @gary। আমি বিশেষত আপনার এল কে কী নির্দেশ করে তা উল্লেখ করার জন্য প্রশংসা করি।
প্যাট্রিক উইলিয়ামস

@ পেট্রিক উইলিয়ামস এর প্রতিক্রিয়ার জন্য ধন্যবাদ। আমি আনন্দিত এই সাহায্য করে। আপনি এটি করতে পারেন [x[1] for x in [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]]কিন্তু এটি চোখের মতো সহজ নয়।
গ্যারি

5

একটি তালিকা বোধগম্যতা একেবারে উপায়। আরও দ্রুত যা হওয়া উচিত তা হ'ল mapএবং itemgetter

import operator

new_list = map(operator.itemgetter(1), old_list)

ওপি গুগলে কোনও উত্তর খুঁজে পাচ্ছে না এমন মন্তব্যের জবাবে, আমি এটি করার জন্য একটি দুর্দান্ত নিষ্পাপ উপায় নির্দেশ করব।

new_list = []
for item in old_list:
    new_list.append(item[1])

এটি ব্যবহার করে:

  1. একটি খালি তালিকা উল্লেখ করতে একটি ভেরিয়েবল ঘোষণা।
  2. লুপের জন্য একটি।
  3. appendতালিকায় পদ্ধতিটি কল করা ।

যদি কেউ কোনও ভাষা শেখার চেষ্টা করে এবং এই মৌলিক টুকরোটি নিজের জন্য একসাথে রাখতে না পারে, তবে তাদের এটিকে অনুশীলন হিসাবে দেখতে হবে এবং বিশ ঘন্টা সময় হলেও এটি নিজেরাই করা উচিত।

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


2

আপনি এর সাথে আনপ্যাকিং সিকোয়েন্সও ব্যবহার করতে পারেন zip:

L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]

_, res = zip(*L)

print(res)

# (2, 3, 5, 4, 7, 7, 8)

এটি _বাতিল হওয়া প্রথম উপাদানগুলি থেকে একটি টুপল তৈরি করে। কেবল দ্বিতীয়টি উত্তোলন করা সম্ভব তবে আরও ভার্জোজ:

from itertools import islice

res = next(islice(zip(*L), 1, None))

2

অথবা আপনি ব্যবহার করতে পারেন pandas:

>>> import pandas as pd
>>> L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]
>>> df=pd.DataFrame(L)
>>> df[1]
0    2
1    3
2    5
3    4
4    7
5    7
6    8
Name: 1, dtype: int64
>>> df[1].tolist()
[2, 3, 5, 4, 7, 7, 8]
>>> 

বা numpy:

>>> import numpy as np
>>> L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]
>>> arr=np.array(L)
>>> arr.T[1]
array([2, 3, 5, 4, 7, 7, 8])
>>> arr.T[1].tolist()
[2, 3, 5, 4, 7, 7, 8]
>>> 

0
a = [(0,2), (4,3), (9,9), (10,-1)]
print(list(map(lambda item: item[1], a)))

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