मेरे पास एक सूची है, सूची में प्रत्येक आइटम भी एक सूची है

सभी उप-सूची में 2 तत्व हैं, और वे एक साथ जुड़े हुए हैं,

[l1, l2, l3, l4...]

जिस तरह से वे एक साथ जुड़ते हैं l2[-1] बराबर l1[0], l3[-1] बराबर l2[0], l4[-1]=l3[0] इत्यादि।

सभी उप-सूची में स्ट्रिंग तत्व हैं जैसे '1 2 3' (जो कि व्हॉट्सएप द्वारा अलग की गई कई अद्वितीय संख्याएं हैं) या '7' (केवल एक संख्या)।

मैं नीचे दी गई सूची का रूपांतरण करना चाहता हूं

[['1 2 3', '4 5'], ['6 7', '1 2 3'], ['10', '6 7']]

आउटपुट होगा

[[['1', '4'], ['6', '1'], ['10', '6']],
 [['2', '4'], ['6', '2'], ['10', '6']],
 [['3', '4'], ['6', '3'], ['10', '6']],
 [['1', '5'], ['6', '1'], ['10', '6']],
 [['2', '5'], ['6', '2'], ['10', '6']],
 [['3', '5'], ['6', '3'], ['10', '6']],
 [['1', '4'], ['7', '1'], ['10', '7']],
 [['2', '4'], ['7', '2'], ['10', '7']],
 [['3', '4'], ['7', '3'], ['10', '7']],
 [['1', '5'], ['7', '1'], ['10', '7']],
 [['2', '5'], ['7', '2'], ['10', '7']],
 [['3', '5'], ['7', '3'], ['10', '7']]]

कहां

  • सबसे आंतरिक सूची का तत्व एक स्ट्रिंग है जिसमें केवल एक संख्या होती है।
  • सबलिस्ट पहले बताई गई संपत्ति को भी संतुष्ट करता है।

मेरे पास एक सुराग है कि ऐसा लगता है कि आपको हर स्थान (उदाहरण में छह स्पॉट) पास करना होगा और एक नंबर चुनना होगा, कौन सी संख्या चुनना है, यह आपके द्वारा पहले चुने गए जोड़े पर निर्भर करता है, मैंने अब तक और प्रगति नहीं की है।

0
ComplicatedPhenomenon 10 सितंबर 2020, 13:16

2 जवाब

सबसे बढ़िया उत्तर

यदि आप सभी संयोजनों को उत्पन्न नहीं करना चाहते हैं और फिर "वैध" को चुनना चाहते हैं, तो आप पहले सूची से केवल अद्वितीय मान प्राप्त कर सकते हैं। फिर आप उनमें से itertools.product प्राप्त कर सकते हैं (तारों को विभाजित करने के बाद) और उनसे "लिंक की गई" सूची का पुनर्निर्माण करें:

lst = [['1 2 3', '4 5'], ['6 7', '1 2 3'], ['10', '6 7']]
sub = [lst[0][1]] + [x[0] for x in lst] # ['4 5', '1 2 3', '6 7', '10']
res =  [ [(b,a) for a,b in zip(p, p[1:])] for p in product(*map(str.split, sub))]

मैं जटिल सूची समझ की पठनीयता के लिए यहां नेस्टेड सूचियों के बजाय टुपल्स का उपयोग कर रहा हूं, (...) को अधिक [...] से बदलने के लिए स्वतंत्र महसूस करें। नतीजा:

[[('1', '4'), ('6', '1'), ('10', '6')],
 [('1', '4'), ('7', '1'), ('10', '7')],
 [('2', '4'), ('6', '2'), ('10', '6')],
 [('2', '4'), ('7', '2'), ('10', '7')],
 [('3', '4'), ('6', '3'), ('10', '6')],
 [('3', '4'), ('7', '3'), ('10', '7')],
 [('1', '5'), ('6', '1'), ('10', '6')],
 [('1', '5'), ('7', '1'), ('10', '7')],
 [('2', '5'), ('6', '2'), ('10', '6')],
 [('2', '5'), ('7', '2'), ('10', '7')],
 [('3', '5'), ('6', '3'), ('10', '6')],
 [('3', '5'), ('7', '3'), ('10', '7')]]
1
tobias_k 10 सितंबर 2020, 15:36
import copy

lst = [['1 2 3', '4 5'], ['6 7', '1 2 3'], ['10', '6 7']]

def print_list(ls):
    if ls is not None:
        for x in ls:
            print x

def transform_list(l):

    if(len(l)==0):
        print 'list provided is empty'
        return None

    tr=[] # intermediate transformed list

    for b in l[0][-1].split(' '):

        for a in l[0][0].split(' '):

            tr = tr + [[[a,b]]]

    for i in range(1,len(l)):
    
        new_tr = []
        
        for a in l[i][0].split(' '):
            
            temp_tr=copy.deepcopy(tr)

            for t in range(len(temp_tr)):

                temp_tr[t].append( [a,temp_tr[t][-1][0]] )

            new_tr = new_tr + temp_tr

        tr=copy.deepcopy(new_tr)
            
    return tr


print '\n\nOutput:'
transformed_list = transform_list(lst)
print_list(transformed_list)
1
ajay.16nk 10 सितंबर 2020, 15:59