나는 두 개의 목록이 있다고 가정
list1 = ['tom', 'mary', 'frank', 'joe', 'john', 'barry']
list2 = [1, 2, 3, 4]
내가 list2
의 숫자로 list1
각각의 이름과 일치하도록합니다. list2
에는 네 개의 숫자가 있으므로 첫 번째 네 개의 이름 각각을 list2
에 대응하는 번호와 쌍으로하고 나머지 이름에 난수를 list1
에 할당하고 싶습니다.
for 루프를 사용하여 enumerate
및 random.choice
을 사용하여이 문제를 해결할 수 있음을 알고 있습니다. 실제로 원래 문제에 such a solution을 제공했습니다.
for name, number in itertools.izip_longest(list1, list2, fillvalue=MAGIC):
print name, number
원래, 나는이 같은 것을 사용하여 생각 : : 그러나
MAGIC = random.choice(list1)
을 random.choice(list1)
먼저 수행하는, 그것을 이런 식으로 뭔가를 할 수있는 경우
나는, 그러나 알고 싶습니다 압축을 위해 대답을 fillvalue
으로 사용합니다. 이 방법은 각 값 쌍에 대해 새로운 임의 값을 선택하지 않으므로 매력적이지 않습니다. 그러므로 itertools.izip_longest
은 fillvalue
을 요구하는데, 그 자체가 값을 가지고있는 것은 아닙니다. 사실, 만약 내가 함수를 제공한다면, 이름과 callable 함수로 구성된 한쌍을 만들어 낼 것이다. 이러한 이유로 lambda
함수는 실행 가능한 솔루션이 아닙니다.
호출 될 때 일부 함수를 호출하는 변수를 만드는 방법은 무엇입니까? itertools.izip_longest
은 fillvalue
변수를 어떻게 사용합니까? 해당 변수의 __repr__
이 호출 되었습니까? 그렇다면 그 안에 함수를 호출하는 __repr__
클래스를 만들 수 있습니까? , inf_gen(f)
가 iter(f, None)
실제로 동등
def inf_gen(f):
while True:
yield f()
참고한다 :
"호출 할 때 일부 함수를 호출하는 변수를 만드는 방법은 어떻게됩니까?" - 그러지 않을거야. 함수를 호출합니다. – user2357112
속성을 사용하여 객체 속성에 대해 원하는 것을 얻을 수 있습니다. Python 3에서는 불쾌한 메타 클래스 매직을 사용하여 클래스 범위에서 원하는 것을 얻을 수 있지만 일반 변수의 경우에는 할 수 없습니다. – user2357112
@ user2357112 : 그렇습니다. 그러나 많은 클래스의 인스턴스는 "called"할 때'__repr__' 값을 보여줍니다. 따라서'__repr__'이 어떤 외부 함수를 호출한다면, 갑자기 함수를 사용하여 값을 결정하는 인스턴스를 보유하는 변수가 생깁니다. 그렇지 않으면 변수와 함수의 차이점에 대해 잘 알고 있습니다. – inspectorG4dget