Bu çok çirkin. Bunu yapmak için daha çok Pythonic yolu nedir?Tupleleri paketlemenin pythonik yolu nedir?
import datetime
t= (2010, 10, 2, 11, 4, 0, 2, 41, 0)
dt = datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], t[6])
Bu çok çirkin. Bunu yapmak için daha çok Pythonic yolu nedir?Tupleleri paketlemenin pythonik yolu nedir?
import datetime
t= (2010, 10, 2, 11, 4, 0, 2, 41, 0)
dt = datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], t[6])
Genel olarak, func(*tuple)
sözdizimini kullanabilirsiniz.
t = (2010, 10, 2, 11, 4, 0, 2, 41, 0)
dt = datetime.datetime(*t[0:7])
Bu açma tuple denir ve (örneğin listeleri gibi) diğer Iterables için kullanılabilir: Hatta burada yapmaya çalıştığımız şey gibi görünüyor başlığın bir kısmını iletebilirsiniz çok.
>>> range(3, 6) # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args) # call with arguments unpacked from a list
[3, 4, 5]
Rasgele yinelenen işler için çalışır. –
Bu sözdiziminin python 3.5'deki herhangi bir yerde (yalnızca işlev çağrılarında değil) herhangi bir yerde çalıştığını eklemek istiyorum, bu nedenle örneğin x, y, z = * (1, 2, 3) gibi ifadeler hatasız olarak çalışır ( – Nearoo
uzun bir zaman önce olmalıydı, diğer liste öğeleri arasında bunu yapmak için bir yolu var mı? 'my_tuple = ("B", "C") gibi; "% s% s% s"% ("A", * my_tuple) '? – Dannid
Sen docs bu konuda okumak isteyebilirsiniz https://docs.python.org/2/tutorial/controlflow.html#unpacking-argument-lists
dt = datetime.datetime(*t[:7])
bakın: İşte (Python tutorial itibaren) başka bir örnek http://docs.python.org/tutorial/controlflow.html # openpacking-argument-list –