有一道题: 比较两个列表范围,如果包含的话,返回TRUE,否则FALSE。 详细题目如下:
Create a function, this function receives two lists as parameters, each list indicates a scope of numbers, the function judges whether list2 is included in list1.
Function signature:
differ_scope(list1, list2)
Parameters:
list1, list2 - list1 and list2 are constructed with strings,
each string indicates a number or a scope of
numbers. The number or scope are randomly, can
be overlapped. All numbers are positive.
E.g.
['23', '44-67', '12', '3', '20-90']
Return Values:
True - if all scopes and numbers indicated by list2 are included in list1.
False - if any scope or number in list2 is out of the range in list1.
Examples:
case1 - list1 = ['23', '44-67', '12', '3', '20-90']
list2 = ['22-34', '33', 45', '60-61']
differ_scope(list1, list2) == True
case2 - list1 = ['23', '44-67', '12', '3', '20-90']
list2 = ['22-34', '33', 45', '60-61', '100']
differ_scope(list1, list2) == False
贴上自己写的代码如下:(备注: python 2.7.6)
def differ_scope(list1, list2): print "list1:" + str(list1) print "list2:" + str(list2) #设置临时存放列表 list1_not_ = [] #用于存放列表1正常的数字值,当然要用int()来转换 list1_yes_ = [] #用于存放列表1中范围值如 44-67 list1_final = [] #用于存放列表1中最终范围值 如:[1,2,3,4,5,6,7,8,9,10] temp1 = [] list2_not_ = [] #用于存放列表2正常的数字值,当然要用int()来转换 list2_yes_ = [] #用于存放列表2中范围值如 44-67 list2_final= [] #用于存放列表2中最终范围值 如:[1,2,3,4,5,6,7,8,9,10] temp2 = [] temp = [] #用于存放列表1,与列表2比较后的列表,从而判断结果为True还是False. #对列表1进行处理 for i in range(len(list1)): #用FOR循环对列表1进行遍历 tag = 0 if list1[i].find('-')>0:#对含范围的数字进行处理,放到list_yes_列表中 strlist = list1[i].split('-') list1_yes_ = range(int(strlist[0]),int(strlist[1])+1)#让其生成一个范围列表 for each in list1_yes_: #FOR循环遍历所有符合条件的. [temp1.append(each)] else: #对列表1中正常的数字进行处理,放到list_not_列表中 list1_not_.append(int(list1[i]))#对列表1中进行处理,放到list_yes_ [temp1.append(i) for i in list1_not_ if not i in temp1]#去除重复项 list1_final = sorted(temp1) #比较后,排序,并放到list1_final列表中 print "list1_final value is:" + str(list1_final)#打印排序后最终list1_final列表 #对列表2进行处理 for i in range(len(list2)): if list2[i].find('-')>0: strlist = list2[i].split('-') list2_yes_ = range(int(strlist[0]),int(strlist[1])+1) for each in list2_yes_: [temp2.append(each)] print "Temp2:" + str(temp2) else: list2_not_.append(int(list2[i])) [temp2.append(i) for i in list2_not_ if not i in temp2] list2_final = sorted(temp2) print "list2_final value is:" + str(list2_final) #对两个列表进行比较,得出最终比较结果. [temp.append(i) for i in list2_final if not i in list1_final]#比较两个列表差值. print "In list2 but not in list1:%s" % (temp)#打印出列表1与列表2的差值 if len(temp)>=1 : print "The result is: False" else: print "The result is: True" if __name__ == '__main__': list1 = ['23', '44-67', '12', '3','90-100'] list2 = ['22-34', '33', '45'] differ_scope(list1,list2)
总结:
1. 这道题关键是想法,如果整成坐标的方式来比较,会很麻烦。
2. 列表转成范围后,如果消除重复项,同样是里面的关键所在。
3. 其次是对列表遍历的操作,同样挺重要。

Pythonに2つのリストを接続する多くの方法があります。1。オペレーターを使用しますが、これはシンプルですが、大きなリストでは非効率的です。 2。効率的ですが、元のリストを変更する拡張メソッドを使用します。 3。=演算子を使用します。これは効率的で読み取り可能です。 4。itertools.chain関数を使用します。これはメモリ効率が高いが、追加のインポートが必要です。 5。リストの解析を使用します。これはエレガントですが、複雑すぎる場合があります。選択方法は、コードのコンテキストと要件に基づいている必要があります。

Pythonリストをマージするには多くの方法があります。1。オペレーターを使用します。オペレーターは、シンプルですが、大きなリストではメモリ効率的ではありません。 2。効率的ですが、元のリストを変更する拡張メソッドを使用します。 3. Itertools.chainを使用します。これは、大規模なデータセットに適しています。 4.使用 *オペレーター、1つのコードで小規模から中型のリストをマージします。 5. numpy.concatenateを使用します。これは、パフォーマンス要件の高い大規模なデータセットとシナリオに適しています。 6.小さなリストに適したが、非効率的な追加方法を使用します。メソッドを選択するときは、リストのサイズとアプリケーションのシナリオを考慮する必要があります。

compiledlanguagesOfferspeedandsecurity、foredlanguagesprovideeaseofuseandportability.1)compiledlanguageslikec arefasterandsecurebuthavelOnderdevelopmentsplat dependency.2)

Pythonでは、forループは反復可能なオブジェクトを通過するために使用され、条件が満たされたときに操作を繰り返し実行するためにしばらくループが使用されます。 1)ループの例:リストを通過し、要素を印刷します。 2)ループの例:正しいと推測するまで、数値ゲームを推測します。マスタリングサイクルの原則と最適化手法は、コードの効率と信頼性を向上させることができます。

リストを文字列に連結するには、PythonのJoin()メソッドを使用して最良の選択です。 1)join()メソッドを使用して、 '' .join(my_list)などのリスト要素を文字列に連結します。 2)数字を含むリストの場合、連結する前にマップ(str、数字)を文字列に変換します。 3) '、'などの複雑なフォーマットに発電機式を使用できます。 4)混合データ型を処理するときは、MAP(STR、Mixed_List)を使用して、すべての要素を文字列に変換できるようにします。 5)大規模なリストには、 '' .join(lage_li)を使用します

pythonusesahybridapproach、コンコイリティレーショントビテコードと解釈を組み合わせて、コードコンピレッドフォームと非依存性bytecode.2)

keydifferencesは、「for」と「while "loopsare:1)" for "for" loopsareideal forterating overencesonownowiterations、while2) "for" for "for" for "for" for "for" for "for" for for for for "wide" loopsarebetterunuinguntinunuinguntinisisisisisisisisisisisisisisisisisisisisisisisisisisisations.un

Pythonでは、さまざまな方法でリストを接続して重複要素を管理できます。1)オペレーターを使用するか、すべての重複要素を保持します。 2)セットに変換してから、リストに戻ってすべての重複要素を削除しますが、元の順序は失われます。 3)ループを使用するか、包含をリストしてセットを組み合わせて重複要素を削除し、元の順序を維持します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。
