复制列表中的数字
Duplicate a number within a list
我有以下代码:
def repeatNumbers(data):
for number in data:
return [number[0]] * number[1]
print(repeatNumbers([[1, 10]]))
print(repeatNumbers([[1, 2], [2, 3]]))
print(repeatNumbers([[10, 4], [34, 6], [92, 2]]))
我想用列表中第二个数字的值复制列表中的第一个数字。我只能得到以下内容:
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[1, 1]
[10, 10, 10, 10]
同时输出必须是字符串,格式如下:
1111111111
11, 222
10101010, 343434343434, 9292
def repeatNumbers(data):
output_strings = []
for numbers in data:
output_strings.append(str(numbers[0]) * numbers[1])
return ", ".join(output_strings)
print(repeatNumbers([[1, 10]]))
print(repeatNumbers([[1, 2], [2, 3]]))
print(repeatNumbers([[10, 4], [34, 6], [92, 2]]))
打印
1111111111
11, 222
10101010, 343434343434, 9292
不返回,而是将中间值 (str(numbers[0]) * numbers[1]
) 存储在列表中
您的问题是您在 for
循环中使用了 return
。这告诉 Python 到 立即 return 你告诉它的值。一种更简洁的方法是将数据转换为 str
并使用 str.join()
方法:
def repeatNumbers(data):
return ", ".join(str(a)*b for a, b in data)
输出:
>>> print(repeatNumbers([[1, 10]]))
1111111111
>>> print(repeatNumbers([[1, 2], [2, 3]]))
11, 222
>>> print(repeatNumbers([[10, 4], [34, 6], [92, 2]]))
10101010, 343434343434, 9292
表达式 (str(a)*b for a, b in data)
是 Python 中的生成器表达式。它允许干净、紧凑、惰性的迭代。
str.join()
方法采用可迭代的字符串序列,并使用用作 .join()
调用前缀的字符串文字将它们连接起来。换句话说,", ".join(seq)
将采用字符串序列 seq
并将它们与字符串 ", "
.
连接起来
我有以下代码:
def repeatNumbers(data):
for number in data:
return [number[0]] * number[1]
print(repeatNumbers([[1, 10]]))
print(repeatNumbers([[1, 2], [2, 3]]))
print(repeatNumbers([[10, 4], [34, 6], [92, 2]]))
我想用列表中第二个数字的值复制列表中的第一个数字。我只能得到以下内容:
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[1, 1]
[10, 10, 10, 10]
同时输出必须是字符串,格式如下:
1111111111
11, 222
10101010, 343434343434, 9292
def repeatNumbers(data):
output_strings = []
for numbers in data:
output_strings.append(str(numbers[0]) * numbers[1])
return ", ".join(output_strings)
print(repeatNumbers([[1, 10]]))
print(repeatNumbers([[1, 2], [2, 3]]))
print(repeatNumbers([[10, 4], [34, 6], [92, 2]]))
打印
1111111111
11, 222
10101010, 343434343434, 9292
不返回,而是将中间值 (str(numbers[0]) * numbers[1]
) 存储在列表中
您的问题是您在 for
循环中使用了 return
。这告诉 Python 到 立即 return 你告诉它的值。一种更简洁的方法是将数据转换为 str
并使用 str.join()
方法:
def repeatNumbers(data):
return ", ".join(str(a)*b for a, b in data)
输出:
>>> print(repeatNumbers([[1, 10]]))
1111111111
>>> print(repeatNumbers([[1, 2], [2, 3]]))
11, 222
>>> print(repeatNumbers([[10, 4], [34, 6], [92, 2]]))
10101010, 343434343434, 9292
表达式 (str(a)*b for a, b in data)
是 Python 中的生成器表达式。它允许干净、紧凑、惰性的迭代。
str.join()
方法采用可迭代的字符串序列,并使用用作 .join()
调用前缀的字符串文字将它们连接起来。换句话说,", ".join(seq)
将采用字符串序列 seq
并将它们与字符串 ", "
.