First and foremost, a language should give me constructs which I can wrap my head around in reasonable time (where the exact value of "reasonable" depends on how powerful and generic it is) which allow me to solve problems efficiently (in terms of brain cycles and typing effort, not CPU cycles) once I can handle them. In other words, gimme higher and higher abstractions until they'd make my head explode, then stop.
Of course I prefer good implementations of concepts I'm already familiar with. For example, Python has great support for iterators and extends the concept by adding generators and generator expressions (list/dict/set comprehension is just syntactic sugar for generators). A language without such powerful iterators (or none at all!) better gives me an equally or more powerful way to consume data structures (e.g. recursion + pattern matching is fine to consume a linked list and very handy when walking trees), or shows me a way/area of programming which has different requirements (for which the language has in turn good solutions).
To name some specific requirements, higher-level (named subroutines etc are assumed) stuff I need to program effectively includes first-class functions and some kind of polymorphism (preferrably parametric polymorphism, but I can get along with OOP + nominal subtype polymorphism if I have to), ideally including generic types (again, I'm a huge fan of parametric polymorphism).