सूची के तत्वों को कैसे विभाजित किया जाए?


84

मेरे पास एक सूची है:

my_list = ['element1\t0238.94', 'element2\t2.3904', 'element3\t0139847']

मैं \tइस परिणाम को प्राप्त करने के लिए और सब कुछ कैसे हटा सकता हूं :

['element1', 'element2', 'element3']

जवाबों:


110

कुछ इस तरह:

>>> l = ['element1\t0238.94', 'element2\t2.3904', 'element3\t0139847']
>>> [i.split('\t', 1)[0] for i in l]
['element1', 'element2', 'element3']

मैं लगभग यही समझता हूं। विभाजित करने के तर्क के अंदर 1 क्या है? क्या मैं मान के लिए समान है सूचकांक के बाद 0 है। क्या यह मेरे द्वारा किए गए शून्य तत्व का उपयोग करके एक नई सूची बना रहा है? फिर क्या ओ 1 वांटेड के रूप में 1 ही एक और विभाजन है, प्रभावी रूप से बाकी स्ट्रिंग से छुटकारा पा रहा है?
मलिक ए। रूमी

2
चूंकि सूची में तार होते हैं, चर मैं एक स्ट्रिंग है। इसलिए i.split ('\ t', 1) स्ट्रिंग्स के विभाजन () विधि को कॉल करता है। प्रति प्रलेखन , इस विधि के पहले पैरामीटर द्वारा विभाजित करने के लिए स्ट्रिंग और दूसरा विभाजन प्रदर्शन करने की अधिकतम संख्या है। विधि स्ट्रिंग्स के प्रदर्शन के परिणामस्वरूप होने वाली स्ट्रिंग्स की सूची लौटाती है, इसलिए "[0]" परिणाम सूची में पहला स्प्लिट स्ट्रिंग लौटाता है।
जेसीएल

2
जब मैंने अपने कोड के लिए यह कोशिश की, तो यह त्रुटि हुई कि 'सूची' ऑब्जेक्ट में कोई विशेषता नहीं है 'विभाजन'। मैं असमंजस में हूँ कि इसको कैसे प्राप्त किया जाए।
कीपरथ

1
@ keitereth24, स्ट्रिंग की रोमन विभाजित सूची। आपके पास सूची की एक सूची हो सकती है
AAI


9

सूची के प्रत्येक तत्व के माध्यम से पुनरावृत्ति करने की कोशिश करें, फिर इसे टैब चरित्र पर विभाजित करें और इसे एक नई सूची में जोड़ें।

for i in list:
    newList.append(i.split('\t')[0])

5
यह काम करता है, लेकिन सूची comprehensions यह करने के लिए एक बहुत अच्छा तरीका है
डेव

6

सूची को चर नाम के रूप में उपयोग न करें। आप निम्नलिखित कोड पर भी नज़र डाल सकते हैं:

clist = ['element1\t0238.94', 'element2\t2.3904', 'element3\t0139847', 'element5']
clist = [x[:x.index('\t')] if '\t' in x else x for x in clist]

या जगह में संपादन:

for i,x in enumerate(clist):
    if '\t' in x:
        clist[i] = x[:x.index('\t')]

2

मुझे दो भागों में फीचर निकासी के लिए एक सूची को विभाजित करना था lt, lc:

ltexts = ((df4.ix[0:,[3,7]]).values).tolist()
random.shuffle(ltexts)

featsets = [(act_features((lt)),lc) 
              for lc, lt in ltexts]

def act_features(atext):
  features = {}
  for word in nltk.word_tokenize(atext):
     features['cont({})'.format(word.lower())]=True
  return features
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.