3

わかりました、リストのリストがあります

list = [['a','b','c'], ['1','2','3'], ['x','y','z']]

各リストの最初の項目を編集して、その前に記号を付けたいと思います。「?」この例では。リスト内包表記を使用してこれを行うことができると思います。これに似たもの:

list = ['?'+x for x in i[0] for i in list]

しかし、それは私にエラーを与えます。このリスト内包表記は私を混乱させます。どうすればいいですか?

4

4 に答える 4

3

まず、変数に名前を付けないでくださいlist組み込みのlist()typeをマスクしてlist()いるため、コードの他の場所でその型のままであると予想すると、簡単にバグにつながる可能性があります。

ネストされた各リストの最初の要素の先頭に文字列を追加するには、単純なリスト内包表記を使用します。

outerlist = [['?' + sub[0]] + sub[1:] for sub in outerlist]

これは、最初の要素が変更された 1 つの要素のリストとサブリストの残りの部分を連結することにより、ネストされたリストから新しいリストを作成します。

デモ:

>>> outerlist = [['a','b','c'], ['1','2','3'], ['x','y','z']]
>>> [['?' + sub[0]] + sub[1:] for sub in outerlist]
[['?a', 'b', 'c'], ['?1', '2', '3'], ['?x', 'y', 'z']]
于 2013-08-03T16:56:27.627 に答える
0

これはうまくいくはずです:

>>> l = [['a','b','c'], ['1','2','3'], ['x','y','z']]
>>> [["?"+a,b,c] for [a,b,c] in l]
[['?a', 'b', 'c'], ['?1', '2', '3'], ['?x', 'y', 'z']]
>>> 
于 2013-08-03T16:59:45.953 に答える