मैं आपकी समस्या को विघटित होगा::
वैकल्पिक रूप से आप की तरह कुछ कर सकता है
- एक "फ्लैट सूची" को देखते हुए उप-सूचियों की एक सूची जहां उप-सूचियों के हैं उत्पादन दी गई लंबाई और समग्र सूची या तो "पंक्ति प्रमुख" क्रम (आपका पहला और तीसरा उदाहरण) या "कॉलम प्रमुख" (आपका दूसरा उदाहरण) में चलाया जा सकता है;
- स्ट्रिंग आइटम्स के साथ उपन्यासियों की एक सूची दी गई है, इसमें से एक HTML तालिका उत्पन्न करें।
मुझे लगता है कि दो कार्यों वास्तव में बहुत ही अलग कर रहे हैं और वहाँ (और कम करने के लिए बहुत) उन्हें mushing में हासिल करने के लिए कुछ भी नहीं है, इसलिए यदि किसी भी अच्छी तरह से डिजाइन पुस्तकालय ऐसे mushing किया मैं चकित हो जाएगा।
def row_major(alist, sublen):
return [alist[i:i+sublen] for i in range(0, len(alist), sublen)]
और कॉलम-प्रमुख है कि बुरा नहीं:
बिंदु 1 के लिए, पंक्ति-प्रमुख आसान है
def col_major(alist, sublen):
numrows = (len(alist)+sublen-1) // sublen
return [alist[i::sublen] for i in range(numrows)]
उदाहरण के लिए
...:
L = ['one','two','three','four','five','six','seven','eight','nine']
for r in row_major(L, 3): print r
print
for r in col_major(L, 3): print r
for r in row_major(L, 4): print r
का उत्पादन आपके तीन वांछित परिणाम (प्रति पंक्ति एक सूची, HTML फॉर्म में अभी तक नहीं ;-)। आप एक ही स्ट्रिंग के रूप में इसे पाने के बजाय इसे बाहर प्रिंट करना चाहते हैं
def html_table(lol):
print '<table>'
for sublist in lol:
print ' <tr><td>'
print ' </td><td>'.join(sublist)
print ' </td></tr>'
print '</table>'
, प्रत्येक print
बदलने के लिए: -
समस्या की दूसरी छमाही तार की सूची की एक सूची से एक HTML तालिका का उत्पादन yield
में और '\n'.join(html_table(lol))
का उपयोग करें।
अब आपके पास दो सरल, उपयोगी, उपयोग करने योग्य और पुन: प्रयोज्य बिल्डिंग ब्लॉक हैं - जब भी आप अपना डेटा कुछ भी के रूप में प्रस्तुत करना चाहते हैं, लेकिन जब भी सूची-सूची-सूची हो, तो उन्हें अलग करना होगा। एक HTML तालिका के रूप में मौजूद इसे बनाने के किसी भी अन्य तरीके से आता है।उन्हें एक साथ लाना आपके आवेदन कोड में करने के लिए आसान है, लेकिन निश्चित रूप से यह भी एक सरल "गोंद दिनचर्या", जैसे ऐसा करना आसान है, html_table
की yield
आधारित संस्करण संभालने और एक एकल स्ट्रिंग परिणाम वांछित है कि:
def list_to_html_table(alist, sublength, column_major=False):
if column_major:
lol = col_major(alist, sublength)
else:
lol = row_major(alist, sublength)
return ''.join(html_table(lol))
नहीं है इस इमारत ब्लॉक mushed-अप गोंद के बड़े धब्बे के मामले में, वास्तव में अच्छे और अधिक सुखद दृष्टिकोण, साथ ही और अधिक उत्पादक के रूप में प्रोग्रामिंग की तुलना में ...? -)
ओपी लूप के लिए नेस्टेड से बचना चाहता था। तो नक्शा (लैम्बडा) के लिए एक परिचय हो सकता है क्रम में। – whatnick
@ व्हाटनिक - क्या आप लूप के अंदर एक लूप देखते हैं? मैं नही। –
बस एक ही लूप। – whatnick