Если предположить, что под элементом вы подразумеваете «asd», ваш основной список всегда будет иметь два уровня глубины, как в вашем примере, и ваш возвращаемый результат должен быть в том же формате, что и будет.
List1 = [["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]]
[ [ F(String) || String <- List2 ] || List2 <- List1 ]
Если вы имеете в виду, что вашим элементом является ["asd", "ddsa"], просто используйте списки: map / 2 или понимание списка, как показано ниже.
List1 = [["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]]
[ F(List2) || List2 <- List1 ]