我有一个列表如下:
lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']]
我想检查每个元素并将第二个元素放入[' 1_A',' 1_C',' 1_B']。所以,我的最终输出是
lofl = [['3_A', '1_E'], ['1_A', '1_C', '1_B'], ['1_B', '1_C']]
我尝试了以下但是没有用。
deflate = [i for i in tre_exr for j in i str(i).split(",")]
我的语法无效。任何人都可以建议问题出在哪里?
提前致谢。
阿伦
答案 0 :(得分:2)
你非常接近,你只是在列表理解中混合了一个多余的i
;另外,最后(即在列表理解的开头),你想要“内部”j
,而不是“外部”i
。此外,无需转换为str
:
[ j for i in tre_exr for j in i.split(",") ]
对于整个列表列表,您必须将其包含在另一个列表中:
>>> lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']]
>>> [[j for i in tre_exr for j in i.split(",")] for tre_exr in lofl]
[['3_A', '1_E'], ['1_A', '1_C', '1_B'], ['1_B', '1_C']]
答案 1 :(得分:1)
我对python有点新意,所以这需要一点点搞清楚!请参阅下文,了解我能想到的最简洁的解决方案。
public class AesCrypto<T> : ICrypto<T>
{
public string Encrypt(T source, string key)
{
var e = Encoding.UTF8;
var rawData = e.GetBytes(JsonConvert.SerializeObject(source));
var cipherData = AESThenHMAC.SimpleEncryptWithPassword(rawData, key);
return Convert.ToBase64String(cipherData);
}
public T Decrypt(string source, string key)
{
var e = Encoding.UTF8;
var decryptedBytes = AESThenHMAC.SimpleDecryptWithPassword(Convert.FromBase64String(source), key);
return JsonConvert.DeserializeObject<T>(e.GetString(decryptedBytes));
}
}
:)
答案 2 :(得分:1)
如果你想要一个容易阅读的话,我认为这是要走的路。溶液
lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']]
result = []
for item in lofl:
x = []
for i in item:
x += i.split(',')
result.append(x)
>>> result
[['3_A', '1_E'], ['1_A', '1_C', '1_B'], ['1_B', '1_C']]