Reputation: 11
I do have a list which looks like:
a = [3,5]
and a list of lines which looks like:
b = ['1, 0.000000e+00, 0.000000e+00, 1.000000e+00\n', '2, 0.000000e+00, 0.000000e+00, 0.000000e+00\n', '3, 0.000000e+00, 1.000000e+00, 1.000000e+00\n', '4, 0.000000e+00, 1.000000e+00, 0.000000e+00\n', '5, 1.000000e+00, 0.000000e+00, 1.000000e+00\n']
i want to make a new list of lines which only contains those lines starting with the numbers of a. it should look like:
newlist = ['3, 0.000000e+00, 1.000000e+00, 1.000000e+00\n', '5, 1.000000e+00, 0.000000e+00, 1.000000e+00\n']
I do know that there is a command like if line in ... line.startswith().... I managed only for explicit numbers to search for, but not from a list of numbers. Does someone know how to handle that?
Upvotes: 0
Views: 49
Reputation: 21285
Use a list-comprehension with a condition that checks against each value in a
a = [3,5]
b = ['1, 0.000000e+00, 0.000000e+00, 1.000000e+00\n', '2, 0.000000e+00, 0.000000e+00, 0.000000e+00\n', '3, 0.000000e+00, 1.000000e+00, 1.000000e+00\n', '4, 0.000000e+00, 1.000000e+00, 0.000000e+00\n', '5, 1.000000e+00, 0.000000e+00, 1.000000e+00\n']
newlist = [
line for line in b if any(line.startswith(str(num) + ',') for num in a)
]
print(newlist)
Which results in:
['3, 0.000000e+00, 1.000000e+00, 1.000000e+00\n', '5, 1.000000e+00, 0.000000e+00, 1.000000e+00\n']
Upvotes: 1
Reputation: 11
can you please try with these two list?
a=[11, 12, 9, 10, 17, 18, 19, 20, 2, 6, 4, 1, 13, 14, 15, 16, 3, 5, 7, 8, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56]
b=['1, 0.000000e+00, 0.000000e+00, 1.000000e+00\n', '2, 0.000000e+00, 0.000000e+00, 0.000000e+00\n', '3, 0.000000e+00, 1.000000e+00, 1.000000e+00\n', '4, 0.000000e+00, 1.000000e+00, 0.000000e+00\n', '5, 1.000000e+00, 0.000000e+00, 1.000000e+00\n', '6, 1.000000e+00, 0.000000e+00, 0.000000e+00\n', '7, 1.000000e+00, 1.000000e+00, 1.000000e+00\n', '8, 1.000000e+00, 1.000000e+00, 0.000000e+00\n', '9, 0.000000e+00, 0.000000e+00, 3.333333e-01\n', '10, 0.000000e+00, 0.000000e+00, 6.666667e-01\n', '11, 0.000000e+00, 3.333333e-01, 1.000000e+00\n', '12, 0.000000e+00, 6.666667e-01, 1.000000e+00\n', '13, 0.000000e+00, 1.000000e+00, 3.333333e-01\n', '14, 0.000000e+00, 1.000000e+00, 6.666667e-01\n', '15, 0.000000e+00, 3.333333e-01, 0.000000e+00\n', '16, 0.000000e+00, 6.666667e-01, 0.000000e+00\n', '17, 1.000000e+00, 0.000000e+00, 3.333333e-01\n', '18, 1.000000e+00, 0.000000e+00, 6.666667e-01\n', '19, 1.000000e+00, 3.333333e-01, 1.000000e+00\n', '20, 1.000000e+00, 6.666667e-01, 1.000000e+00\n', '21, 1.000000e+00, 1.000000e+00, 3.333333e-01\n', '22, 1.000000e+00, 1.000000e+00, 6.666667e-01\n', '23, 1.000000e+00, 3.333333e-01, 0.000000e+00\n', '24, 1.000000e+00, 6.666667e-01, 0.000000e+00\n', '25, 3.333333e-01, 0.000000e+00, 0.000000e+00\n', '26, 6.666667e-01, 0.000000e+00, 0.000000e+00\n', '27, 3.333333e-01, 0.000000e+00, 1.000000e+00\n', '28, 6.666667e-01, 0.000000e+00, 1.000000e+00\n', '29, 3.333333e-01, 1.000000e+00, 0.000000e+00\n', '30, 6.666667e-01, 1.000000e+00, 0.000000e+00\n', '31, 3.333333e-01, 1.000000e+00, 1.000000e+00\n', '32, 6.666667e-01, 1.000000e+00, 1.000000e+00\n', '33, 0.000000e+00, 3.333333e-01, 3.333333e-01\n', '34, 0.000000e+00, 6.666667e-01, 3.333333e-01\n', '35, 0.000000e+00, 3.333333e-01, 6.666667e-01\n', '36, 0.000000e+00, 6.666667e-01, 6.666667e-01\n', '37, 1.000000e+00, 3.333333e-01, 6.666667e-01\n', '38, 1.000000e+00, 6.666667e-01, 6.666667e-01\n', '39, 1.000000e+00, 3.333333e-01, 3.333333e-01\n', '40, 1.000000e+00, 6.666667e-01, 3.333333e-01\n', '41, 3.333333e-01, 0.000000e+00, 3.333333e-01\n', '42, 3.333333e-01, 0.000000e+00, 6.666667e-01\n', '43, 6.666667e-01, 0.000000e+00, 3.333333e-01\n', '44, 6.666667e-01, 0.000000e+00, 6.666667e-01\n', '45, 6.666667e-01, 1.000000e+00, 3.333333e-01\n', '46, 6.666667e-01, 1.000000e+00, 6.666667e-01\n', '47, 3.333333e-01, 1.000000e+00, 3.333333e-01\n', '48, 3.333333e-01, 1.000000e+00, 6.666667e-01\n', '49, 3.333333e-01, 3.333333e-01, 0.000000e+00\n', '50, 6.666667e-01, 3.333333e-01, 0.000000e+00\n', '51, 3.333333e-01, 6.666667e-01, 0.000000e+00\n', '52, 6.666667e-01, 6.666667e-01, 0.000000e+00\n', '53, 3.333333e-01, 6.666667e-01, 1.000000e+00\n', '54, 6.666667e-01, 6.666667e-01, 1.000000e+00\n', '55, 3.333333e-01, 3.333333e-01, 1.000000e+00\n', '56, 6.666667e-01, 3.333333e-01, 1.000000e+00\n', '57, 3.333333e-01, 3.333333e-01, 6.666667e-01\n', '58, 6.666667e-01, 3.333333e-01, 6.666667e-01\n', '59, 3.333333e-01, 6.666667e-01, 6.666667e-01\n', '60, 6.666667e-01, 6.666667e-01, 6.666667e-01\n', '61, 3.333333e-01, 3.333333e-01, 3.333333e-01\n', '62, 6.666667e-01, 3.333333e-01, 3.333333e-01\n', '63, 3.333333e-01, 6.666667e-01, 3.333333e-01\n', '64, 6.666667e-01, 6.666667e-01, 3.333333e-01\n']
Upvotes: 0
Reputation: 15488
Try list comprehension:
print([x for x in b if x[0] in [str(y) for y in a]])
Upvotes: 0