python 将列表中的元素追加到列表中

python appending elements to a list from a list

我想创建一个列表,从 python 中的 2 个单独列表中交替添加元素。 我有以下想法,但它似乎不起作用:

t1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
t2 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']
t3= [len(t1)+len(t2)]
a = 0

while a < len(t1)+len(t2):
    t3.extend(t1[a])
    t3.extend(t2[a])
    a = a + 1
print t3

所以基本上我想要 ['Jan',31,'Feb',28,'Mar',31, 等等...]

您可能需要阅读有关 python 列表及其方法的更多信息。 t3= [len(t1)+len(t2)] 这完全没有必要。我猜你有 C 背景并试图用大小初始化列表。在 python 中,您不必初始化列表大小(它会自动增加)。并且您在列表中的项目不会按照您输入的 顺序 存储。如果您希望您的项目在 python 中检查 tuple顺序相同。 快乐编码

t1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
t2 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
      'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']

arr = []

for i in range(12):
    arr.append(t2[i])
    arr.append(t1[i])

print(arr)

输出-

['Jan', 31, 'Feb', 28, 'Mar', 31, 'Apr', 30, 'May', 31, 'Jun', 30, 'Jul', 31, 'Aug', 31, 'Sept', 30, 'Oct', 31, 'Nov', 30, 'Dec', 31]

你也可以写-

import itertools

arr = list(itertools.chain.from_iterable(zip(t2, t1))

在Python中,你不能像其他语言的数组那样创建固定长度的列表,所以第三行应该只是t3 = [].

此外,extend() 函数用于连接列表。要添加单个新值,您需要改用 append() 函数。

zip 列表并展平结果。

>>> from itertools import chain
>>> t1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
>>> t2 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
... 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']
>>> list(chain(*zip(t2, t1)))
['Jan', 31, 'Feb', 28, 'Mar', 31, 'Apr', 30, 'May', 31, 'Jun', 30, 'Jul', 31, 'Aug', 31, 'Sept', 30, 'Oct', 31, 'Nov', 30, 'Dec', 31]

没有chain:

>>> [x for tup in zip(t2, t1) for x in tup]
['Jan', 31, 'Feb', 28, 'Mar', 31, 'Apr', 30, 'May', 31, 'Jun', 30, 'Jul', 31, 'Aug', 31, 'Sept', 30, 'Oct', 31, 'Nov', 30, 'Dec', 31]

给你:

t1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
t2 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
      'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']
t3 = list()

for i, j in zip(t1, t2):
  t3.append(i)
  t3.append(j)

print(t3)

最短的解决方案可能是:

list(sum(zip(t2, t1), ()))
  1. 在 Python 中,您不需要 "reserve capacity" 来获取列表。随便写

    t3 = []
    

    事实上,t3 = [len(t1)+len(t2)] 甚至没有创建长度为 24 的列表,而是创建了一个包含单个条目 [24] 的列表。

  2. t1[a]t2[a] 是您要添加到列表中的元素。要添加元素,您可以使用 .append 方法:

    t3.append(t1[a])
    t3.append(t2[a])
    

    .extend用于向列表中添加一个列表(实际上是任何可迭代的),例如

    t3.extend([t1[a], t2[a]])
    
  3. 问题本身可以使用list comprehensions轻松解决。

    [a for l in zip(t2, t1) for a in l]
    

还有许多其他改进可以进行(例如,使用 for 循环而不是 while 循环)。你可以把它带到 http://codereview.stackexchange.com.


(顺便说一句,这段代码不处理闰年。)

Python是动态编程语言,标识符的类型在赋值时就确定了。 所以基本上你可以这样做:

t1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
t2 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']
t3= []
for a in range(len(t1)):
    append.append(t1[a])
    apppend.append(t2[a])
print t3