பைத்தானில் தட்டையாக்கும் பட்டியல்களுக்கு அறிமுகம்:
Python உடன் பணிபுரியும் போது, நீங்கள் பட்டியல்களின் பட்டியலை ஒரே பிளாட் பட்டியலில் சமன் செய்ய வேண்டிய சூழ்நிலையை நீங்கள் சந்திக்கலாம். தரவு கையாளுதல் மற்றும் பகுப்பாய்வுக்கு இது மிகவும் பயனுள்ளதாக இருக்கும். உதாரணமாக, [[1,2,3], [4,5,6], [7], [8,9]] போன்ற பட்டியல்களின் பட்டியலைக் கவனியுங்கள்.
இந்த வழிகாட்டியில், இதை அடைவதற்கான பல்வேறு முறைகளை ஆராய்வோம். நீங்கள் உள்ளமை பட்டியல் புரிதல்களை கையாள்கிறீர்களோ அல்லது மிகவும் ஆழமாக உள்ளமைக்கப்பட்ட கட்டமைப்புகளுக்கு தீர்வுகள் தேவைப்படுகிறீர்களோ, உங்கள் தரவு கட்டமைப்பை எளிமைப்படுத்த பயனுள்ள நுட்பங்களை நீங்கள் காணலாம்.
கட்டளை | விளக்கம் |
---|---|
itertools.chain | ஒரு இட்டேட்டரை உருவாக்குகிறது, அது முதல் செயலியில் இருந்து அது தீர்ந்து போகும் வரை, அடுத்த செயலிக்கு செல்லும். |
functools.reduce | ஒரு வரிசையின் உருப்படிகளுக்கு ஒட்டுமொத்தமாக இரண்டு வாதங்களின் செயல்பாட்டைப் பயன்படுத்துகிறது, வரிசையை ஒற்றை மதிப்பாகக் குறைக்கிறது. |
lambda | சுருக்கமான, தூக்கி எறியப்படும் செயல்பாடுகளுக்கு பொதுவாகப் பயன்படுத்தப்படும் அநாமதேய செயல்பாட்டை வரையறுக்கிறது. |
list comprehension | ஒரு வெளிப்பாட்டைத் தொடர்ந்து உட்பிரிவைச் சேர்ப்பதன் மூலம் பட்டியல்களை உருவாக்க ஒரு சுருக்கமான வழியை வழங்குகிறது. |
* (unpacking operator) | செயல்பாட்டு அழைப்புகளில் உள்ள வாதங்களுக்குச் செயல்படக்கூடியவற்றைத் திறக்க அல்லது சேகரிப்பிலிருந்து கூறுகளைத் திறக்கப் பயன்படுகிறது. |
for-in loop | பட்டியல் அல்லது சரம் போன்ற எந்தவொரு வரிசையின் உருப்படிகளையும் அவை தோன்றும் வரிசையில் மீண்டும் செய்யப் பயன்படுகிறது. |
தட்டையான பட்டியல்களுக்கான பைதான் ஸ்கிரிப்ட்களைப் புரிந்துகொள்வது:
மேலே கொடுக்கப்பட்டுள்ள ஸ்கிரிப்ட்கள் பைத்தானில் உள்ள பட்டியல்களின் பட்டியலைத் தட்டையாக்க மூன்று வெவ்வேறு முறைகளைக் காட்டுகின்றன. முதல் ஸ்கிரிப்ட் a ஐப் பயன்படுத்துகிறது list comprehension, இது ஒரு வெளிப்பாட்டைத் தொடர்ந்து ஒரு வெளிப்பாட்டைச் சேர்த்து பட்டியல்களை உருவாக்குவதற்கான ஒரு சுருக்கமான வழியாகும் for உட்கூறு. இந்த முறை ஒவ்வொரு துணைப் பட்டியல் மற்றும் உருப்படி மூலம் மீண்டும் மீண்டும் செய்கிறது, பட்டியலை திறம்பட சமன் செய்கிறது. இரண்டாவது ஸ்கிரிப்ட் பயன்படுத்துகிறது itertools.chain செயல்பாடு, இது ஒரு இட்டேட்டரை உருவாக்குகிறது, இது முதல் செயலியில் இருந்து அது தீர்ந்து போகும் வரை கூறுகளை வழங்குகிறது, பின்னர் அடுத்த செயலிக்கு செல்கிறது. அன்பேக்கிங் ஆபரேட்டரைப் பயன்படுத்துவதன் மூலம் *, நாங்கள் அனைத்து துணை ஆர்வலர்களையும் கடந்து செல்லலாம் itertools.chain ஒரே நேரத்தில்.
மூன்றாவது ஸ்கிரிப்ட் பயன்படுத்துகிறது functools.reduce செயல்பாடு, இது ஒரு வரிசையின் உருப்படிகளுக்கு ஒட்டுமொத்தமாக இரண்டு வாதங்களின் செயல்பாட்டைப் பயன்படுத்துகிறது, வரிசையை ஒற்றை மதிப்பாகக் குறைக்கிறது. இங்கே, ஏ lambda செயல்பாடு பட்டியல்களை இணைக்கப் பயன்படுகிறது, இதன் மூலம் பட்டியல்களின் பட்டியலைத் தட்டையாக்குகிறது. இந்த முறைகள் ஒவ்வொன்றும் அதன் தனித்துவமான நன்மைகளைக் கொண்டுள்ளன மற்றும் சிக்கலின் குறிப்பிட்ட தேவைகளின் அடிப்படையில் தேர்ந்தெடுக்கப்படலாம். இந்தக் கட்டளைகளைப் புரிந்துகொண்டு பயன்படுத்துவதன் மூலம், பைத்தானில் உள்ளமைப்பட்ட பட்டியல்களை நீங்கள் திறமையாக நிர்வகிக்கலாம் மற்றும் கையாளலாம்.
பட்டியல் புரிதல்களைப் பயன்படுத்தி பைத்தானில் பட்டியல்களின் பட்டியலைத் தட்டையாக்குதல்
பட்டியல் புரிதல்களுடன் பைத்தானைப் பயன்படுத்துதல்
# Given list of lists
list_of_lists = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
# Flatten the list using list comprehension
flat_list = [item for sublist in list_of_lists for item in sublist]
# Print the flattened list
print(flat_list)
# Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]
itertools.chain ஐப் பயன்படுத்தி பைத்தானில் பட்டியல்களின் பட்டியலைத் தட்டையாக்குதல்
ஐடெர்டூல் தொகுதியுடன் பைத்தானைப் பயன்படுத்துதல்
import itertools
# Given list of lists
list_of_lists = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
# Flatten the list using itertools.chain
flat_list = list(itertools.chain(*list_of_lists))
# Print the flattened list
print(flat_list)
# Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]
functools.reduce ஐப் பயன்படுத்தி பைத்தானில் பட்டியல்களின் பட்டியலைத் தட்டையாக்குதல்
ஃபங்க்டூல்ஸ் தொகுதியுடன் பைத்தானைப் பயன்படுத்துதல்
from functools import reduce
# Given list of lists
list_of_lists = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
# Flatten the list using functools.reduce
flat_list = reduce(lambda x, y: x + y, list_of_lists)
# Print the flattened list
print(flat_list)
# Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]
பைத்தானில் பட்டியல்களைத் தட்டையாக்குவதற்கான மேம்பட்ட நுட்பங்கள்
பைத்தானில் உள்ள பட்டியலைத் தட்டையாக்குவதற்கான மற்றொரு சக்திவாய்ந்த அணுகுமுறை, பயன்படுத்துவதை உள்ளடக்கியது numpy நூலகம். numpy பைத்தானில் அறிவியல் கம்ப்யூட்டிங்கிற்கான ஒரு அடிப்படை தொகுப்பு மற்றும் பெரிய அணிவரிசைகள் மற்றும் மெட்ரிக்குகளைக் கையாள ஒரு திறமையான வழியை வழங்குகிறது. பட்டியல்களின் பட்டியலை a ஆக மாற்றுவதன் மூலம் numpy வரிசை, நீங்கள் பயன்படுத்தலாம் flatten() கட்டமைப்பை எளிதாக சமன் செய்யும் முறை. பெரிய தரவுத்தொகுப்புகளைக் கையாளும் போது இந்த முறை மிகவும் பயனுள்ளதாக இருக்கும் numpy செயல்திறனுக்காக உகந்ததாக உள்ளது.
கூடுதலாக, நீங்கள் ஆராயலாம் deep flattening மிகவும் சிக்கலான, ஒழுங்கற்ற உள்ளமை பட்டியல்களுக்கான நுட்பம். நூலகங்கள் போன்றவை more-itertools போன்ற செயல்பாடுகளை வழங்குகின்றன collapse, இது உள்ளமை கட்டமைப்புகளை மீண்டும் மீண்டும் சமன் செய்யும். இந்த மேம்பட்ட முறைகள் பைத்தானின் திறன்களை விரிவுபடுத்துகிறது, இது பல்வேறு தரவு வடிவங்களுடன் பணிபுரியும் போது அதிக நெகிழ்வுத்தன்மை மற்றும் செயல்திறனை அனுமதிக்கிறது.
பைத்தானில் தட்டையான பட்டியல்கள் பற்றி அடிக்கடி கேட்கப்படும் கேள்விகள்
- பைத்தானில் பட்டியல்களின் பட்டியலை சமன் செய்வதற்கான எளிய வழி எது?
- ஒரு பயன்படுத்தி list comprehension பைத்தானில் உள்ள பட்டியல்களின் பட்டியலை சமன் செய்வதற்கான எளிய முறை.
- பட்டியல்களின் பட்டியலைத் தட்டச்சு செய்ய முடியுமா? numpy?
- ஆம், நீங்கள் பட்டியலை a ஆக மாற்றலாம் numpy வரிசை மற்றும் பயன்படுத்தவும் flatten() முறை.
- ஆழமாக உள்ளமைக்கப்பட்ட பட்டியலை எவ்வாறு சமன் செய்வது?
- ஆழமாக உள்ளமைக்கப்பட்ட பட்டியல்களுக்கு, நீங்கள் போன்ற நூலகங்களைப் பயன்படுத்தலாம் more-itertools மற்றும் அவர்களின் collapse செயல்பாடு.
- வெளி நூலகங்களை இறக்குமதி செய்யாமல் பட்டியலைத் தட்டையாக்க முடியுமா?
- ஆம், கலவையைப் பயன்படுத்துதல் list comprehensions மற்றும் மறுநிகழ்வு வெளிப்புற நூலகங்கள் இல்லாமல் இதை அடைய முடியும்.
- பெரிய பட்டியல்களை சமன் செய்யும் போது என்ன செயல்திறன் பரிசீலனைகள் உள்ளன?
- பெரிய பட்டியல்களுக்கு, பயன்படுத்துகிறது numpy அல்லது மற்ற உகந்த நூலகங்கள் செயல்திறனை கணிசமாக மேம்படுத்தலாம்.
- எப்படி செய்கிறது itertools.chain பட்டியல்களை தட்டையாக்கும் முறை வேலை?
- இது பல பட்டியல்களை ஒரு ஒற்றை இயக்கக்கூடியதாக இணைக்கிறது, பின்னர் அதை பட்டியலாக மாற்றலாம்.
- நீங்கள் பயன்படுத்தி பட்டியல்களின் பட்டியலை தட்டையாக்க முடியும் functools.reduce?
- ஆம், விண்ணப்பிப்பதன் மூலம் a lambda பட்டியல்களை இணைக்கும் செயல்பாடு, functools.reduce பட்டியல்களின் பட்டியலை சமன் செய்யலாம்.
- அன் பேக்கிங் ஆபரேட்டரின் பங்கு என்ன * தட்டையான பட்டியல்களில்?
- பேக்கிங் ஆபரேட்டர் * ஒரு பட்டியலை நிலை வாதங்களாக விரிவுபடுத்துகிறது, இது போன்ற செயல்பாடுகளில் பயனுள்ளதாக இருக்கும் itertools.chain.
பட்டியல்களைத் தட்டையாக்குவதற்கான முறைகளை சுருக்கமாகக் கூறுதல்:
பைத்தானில் உள்ள பட்டியல்களின் பட்டியலைத் தட்டையாக்குவது பல்வேறு நுட்பங்களைப் பயன்படுத்தி செய்யப்படலாம், ஒவ்வொன்றும் வெவ்வேறு காட்சிகளுக்கு ஏற்றது. பட்டியல் புரிதல்கள் பட்டியலைத் தட்டையாக்க நேரடியான மற்றும் படிக்கக்கூடிய வழியை வழங்குகிறது, குறிப்பாக எளிமையான கட்டமைப்புகளைக் கையாளும் போது. மிகவும் சிக்கலான பணிகளுக்கு, தி itertools.chain செயல்பாடு பல பட்டியல்களை ஒரே செயலியில் இணைப்பதன் மூலம் திறமையான மற்றும் நேர்த்தியான தீர்வை வழங்குகிறது. கூடுதலாக, தி functools.reduce ஒரு செயல்பாடு lambda வெளிப்பாடு சக்திவாய்ந்த, செயல்பாட்டு நிரலாக்க நுட்பங்களை பட்டியல்களை சமன் செய்ய அனுமதிக்கிறது, இது ஆழமாக உள்ளமைக்கப்பட்ட பட்டியல்களுக்கு குறிப்பாக பயனுள்ளதாக இருக்கும்.
சரியான முறையைத் தேர்ந்தெடுப்பது பட்டியல் கட்டமைப்பின் சிக்கலான தன்மை மற்றும் பணியின் குறிப்பிட்ட தேவைகளைப் பொறுத்தது. இந்த முறைகளைப் புரிந்துகொள்வது, பைத்தானில் தரவுக் கட்டமைப்புகளை திறம்பட கையாளும் டெவலப்பரின் திறனை மேம்படுத்துகிறது, இது மிகவும் திறமையான மற்றும் படிக்கக்கூடிய குறியீட்டிற்கு வழிவகுக்கும். இந்த நுட்பங்களில் தேர்ச்சி பெறுவதன் மூலம், டெவலப்பர்கள் பரந்த அளவிலான தரவு கையாளுதல் சவால்களை நம்பிக்கையுடன் சமாளிக்க முடியும்.