Python - 循环只重复第一次输出

时间:2016-05-05 13:08:52

标签: python loops

我不知道下面的代码有什么问题。循环遍历列表中的所有元素,但只重复第一个输出。

我试图在一行上将偶数索引和奇数索引字符打印为以空格分隔的字符串。

例:
animals = ['elephant','monkey','tiger']

我的代码正在打印下面的

出[33]:
eehn lpat
eehn lpat
eehn lpat

输出应为:

eehn lpat
mne oky
tgr即

这是我的python 2代码:

System.out.println(System.getproperty("user.dir"));

感谢您的帮助!

3 个答案:

答案 0 :(得分:6)

这是因为您只在顶部指定一次w。您应该每次在for循环内分配它。同样地evenodd

答案 1 :(得分:2)

请记住在protected override void OnLoad(EventArgs e) { base.OnLoad(e); var timer = new System.Threading.Timer((x) => { RefreshMugshots(); }, null, TimeSpan.Zero, TimeSpan.FromMinutes(5)); } protected void RefreshMugshots() { DataTable dt = this.ExecSprocReturnDataTable(SPROC_MUGSHOTS_GET); foreach (DataRow row in dt.Rows) { string identifier = row["identifier"].ToString(); HtmlImage img = mugshots_container.Controls.OfType<HtmlImage>() .SingleOrDefault((x => x.Attributes["identifier"] == identifier)); if (img != null) { img.Src = ConvertByteArrayToBase64String(row["image"] as byte[]); } else { img = new HtmlImage() { Src = ConvertByteArrayToBase64String(row["image"] as byte[]) }; img.Attributes.Add("identifier", identifier); mugshots_container.Controls.Add(img); } } } 中的每个animal后重置循环变量:

animals

答案 2 :(得分:2)

切片

当你遇到一个你必须选择的问题时,比如偶数和奇数,来自序列Python的元素有一些适合你的东西,这减少了对显式循环的需求并提供了更简洁的符号,切片符号

l = [3 ,7, 4, 5, 1, 9]
l[2]        # 4
l[2:3]      # [4]

请注意,对于普通索引,您将获得序列的元素,并使用切片表示法获得新列表,在我们的示例中包含第二个和第三个分隔符之间包含的元素

_ 3 _ 7 _ 4 _ 5 _ 1 _ 9 _
0   1   2   3   4   5   6
         ^^^

切片表示法使用了许多默认值,例如,如果您没有指定边界, 它从第零个分隔符到最后一个分隔符,或类似的静脉

l[:]  # a copy of l
l[:3] # [3, 7, 4]
l[3:] # [5, 1, 9]

最终你可以指定一个步骤

l[0:6:2] # [3, 4, 1]

或更简单

l[::2]   # [3, 4, 1]

1开始并使用第2步时会发生什么?

l[1::2]  # [7, 5, 9]

鉴于切片表示法也适用于字符串,您可以使用它来解决所有问题。

切片表示法还有一个从序列末尾开始计数的快捷方式(负数),但这与您的问题无关,所以我不会详细解释它。功能

切片和你的问题

当你使用时 切片表示法,也适用于字符串,在Python 2中你有

animals = ['elephant', 'monkey', 'tiger']
odd_even = [a[0::2]+' '+a[1::2] for a in animals]
print '\n'.join(odd_even)

在打印前将'\n'(即新行字符)与不同字符串连接在一起。

在Python 3中,它是

animals = ['elephant', 'monkey', 'tiger']
odd_even = [a[0::2]+' '+a[1::2] for a in animals]
print('\n'.join(odd_even))

非常类似于Python 2或

animals = ['elephant', 'monkey', 'tiger']
odd_even = [a[0::2]+' '+a[1::2] for a in animals]
print(*odd_even, sep='\n')

你在哪里使用

  • sep 关键字参数print,以便用换行符分隔打印项目
  • *sequence语法,您可以在函数调用中使用该语法来表示必须展开序列的元素并将其作为单独的参数传递给被调用的函数。