[(1,2), (2,3), (4,5), (3,4), (6,7), (6,7), (3,8)]
मैं इस सूची के अंदर प्रत्येक टपल से दूसरा मान कैसे लौटाऊं?
वांछित उत्पादन:
[2, 3, 5, 4, 7, 7, 8]
जवाबों:
एक सूची समझ के साथ ।
[x[1] for x in L]
इग्नासियो का जवाब है कि आप क्या चाहते हैं। हालांकि, जैसा कि कोई पायथन भी सीख रहा है, मुझे इसे आपके लिए विच्छेदित करने का प्रयास करें ... जैसा कि उल्लेख किया गया है, यह एक सूची समझ है ( उदाहरण के लिए, DiveIntoPython3 में शामिल है )। यहाँ कुछ बिंदु दिए गए हैं:
[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 , या समझ पर किसी भी संसाधन के माध्यम से पढ़ने में कुछ समय बिताऊंगा । सौभाग्य।
x
LC के बाहर मौजूद होगा, जिसके अंतिम मान को बाध्य किया जाएगा। यह 3.x में तय किया गया है।
[x[1] for x in [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]]
लेकिन यह आंखों पर उतना आसान नहीं है।
एक सूची समझ पूरी तरह से ऐसा करने का तरीका है। दूसरा तरीका जो तेज होना चाहिए वह है map
और itemgetter
।
import operator
new_list = map(operator.itemgetter(1), old_list)
टिप्पणी के जवाब में कि ओपी को Google पर कोई जवाब नहीं मिला, मैं इसे करने के लिए एक सुपर भोला तरीका बताऊंगा।
new_list = []
for item in old_list:
new_list.append(item[1])
यह उपयोग करता है:
append
किसी सूची पर विधि को कॉल करना ।यदि कोई व्यक्ति किसी भाषा को सीखने की कोशिश कर रहा है और इन मूल टुकड़ों को अपने लिए नहीं रख सकता है, तो उन्हें इसे एक अभ्यास के रूप में देखने की आवश्यकता है और इसे स्वयं भी करना चाहिए, भले ही इसमें बीस घंटे लगें।
किसी को यह सीखने की ज़रूरत है कि कोई क्या चाहता है और उपलब्ध साधनों की तुलना कैसे करें । मेरे दूसरे उत्तर के प्रत्येक तत्व को एक बुनियादी ट्यूटोरियल में शामिल किया जाना चाहिए। आप एक को पढ़े बिना प्रोग्राम करना नहीं सीख सकते ।
या आप उपयोग कर सकते हैं 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]
>>>
आप इसके साथ अनुक्रम अनपैकिंग का भी उपयोग कर सकते हैं 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))