The single statement:
DELETE FROM table_name WHERE X IN ('1', '2', '3')
...would be faster. I'm not sure what database you're using, but I'd recommend looking into the execution plan of your queries. If you're using MySQL, you can use the EXPLAIN command like:
EXPLAIN DELETE FROM table_name WHERE X IN ('1', '2', '3')
Also as you've wrote in the comments if you're looking to dynamically fill you IN() clause you can use a subquery like:
DELETE FROM table_name WHERE x IN (SELECT id FROM table_name WHERE Y = Z)
(or whatever)